Musi c player cra sh qualcomm Индекс ошибок за пределами - PullRequest
0 голосов
/ 28 января 2020

Я разработал приложение проигрывателя Musi c, которое воспроизводит песни с реального мобильного устройства. Обычно все получают Qualcomm в качестве предупреждения. это не влияет на них. Но в моем случае я получил Qualcomm как ошибку. По этому мое приложение вылетает. Приложение запускается, но, когда я нажимаю любую кнопку, оно падает, и оно также не показывает список песен, присутствующих на моем реальном мобильном устройстве. Я ученик, пожалуйста, помогите мне.

ActivityMain. java

package com.example.rahul.musicdroid;

import android.Manifest;
import android.app.ListActivity;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;

import com.karumi.dexter.Dexter;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionDeniedResponse;
import com.karumi.dexter.listener.PermissionGrantedResponse;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.single.PermissionListener;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MusicDroidActivity extends ListActivity {

private int mCurTime = 0;
private static final String MEDIA_PATH = "/sdcard/";
private List<String> mSongs = new ArrayList<String>();
private MediaPlayer mMediaPlayer = new MediaPlayer();
private int mSongIndex = 0;
private int mDuration = 0;
private ImageButton mPlay;
private ImageButton mPause;
private ImageButton mNext;
private ImageButton mPrevious;
private ImageButton mStop;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    mPrevious = findViewById(R.id.ImageButton01);
    mPlay = findViewById(R.id.ImageButton02);
    mNext = findViewById(R.id.ImageButton04);
    mPause = findViewById(R.id.ImageButton03);
    mStop = findViewById(R.id.ImageButton05);



    mPrevious.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            prevSong();
        }
    });





    mPlay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            playSong(mSongIndex, mCurTime);
        }
    });





    mPause.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mCurTime = getCurrentDuration(mSongIndex);
            mMediaPlayer.pause();
        }
    });




    mNext.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            nextSong();
        }
    });




    mStop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mMediaPlayer.stop();
            mMediaPlayer.reset();
            mCurTime=0;
        }
    });

    checkPermission();
   }




    public void checkPermission(){

      Dexter.withActivity(this)
            .withPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
            .withListener(new PermissionListener() {
                @Override
                public void onPermissionGranted(PermissionGrantedResponse response) {
                    updateSongList();


                }

                @Override
                public void onPermissionDenied(PermissionDeniedResponse response) {

                }

                @Override
                public void onPermissionRationaleShouldBeShown(PermissionRequest permission, 
                PermissionToken token) {

                    token.continuePermissionRequest();

                }
            }).check();
            }




       public void onResume(){
       super.onResume();

      /* updateSongList();*/
      ArrayAdapter<String> songList = new ArrayAdapter<String>(this,R.layout.songlist, mSongs);
      setListAdapter(songList);
        }



     public void updateSongList(){
       File home = new File(MEDIA_PATH);
      Log.i("home",home.toString());
      //Log.i("home",home.listFiles().toString());
      if (home.listFiles(new Mp3Filter()).length > 0){
        Log.i("home","entered the if");
        for (File file : home.listFiles(new Mp3Filter())){
            mSongs.add(file.getName());
        }
      }
     }


     protected void onListItemClick(ListView l, View v, int position, long id)
    {
       playSong(position, 0);
      }



    public void nextSong(){
        if (++mSongIndex >= mSongs.size())
            mSongIndex = 0;
        playSong(mSongIndex, 0);
         }


       public void prevSong(){
       mSongIndex--;
       if (mSongIndex > 0)
        playSong(mSongIndex, 0);
       else {
        mSongIndex = 0;
        playSong(mSongIndex,0);
      }
      }

     public int getSongDuration(int index)
   {
    mDuration=mMediaPlayer.getDuration();
    Log.v("Song Duration", String.valueOf(mDuration));
    return mDuration;
    }

     public int getCurrentDuration(int index){
    int current_position;
    current_position=mMediaPlayer.getCurrentPosition();
    Log.v("Current Dur:", String.valueOf(current_position));
    return current_position;
    }


    class Mp3Filter implements FilenameFilter{
    public boolean accept(File dir, String name) {
        return (name.endsWith(".mp3") || name.endsWith(".MP3"));
    }
    }


       public void playSong(final int position, final int cur_pos){
        try{
        mMediaPlayer.reset();
        mMediaPlayer.setDataSource(MEDIA_PATH + mSongs.get(position));
        mMediaPlayer.prepare();
        mMediaPlayer.seekTo(cur_pos);
        mMediaPlayer.start();
        mDuration=position;

        mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
        {
            public void onCompletion(MediaPlayer arg0){
                nextSong();
            }
        });
       }catch (IOException e){
        Log.v(getString(R.string.app_name), e.getMessage());
       }
       }

      public void onStop(){
    super.onStop();
    mMediaPlayer.stop();
    mMediaPlayer.release();
     }
    }

Main. xml

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context="com.example.rahul.musicdroid.MusicDroidActivity"
 android:weightSum="1">


   <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="0.30"
    android:orientation="horizontal">

    <ImageButton
        android:id="@+id/ImageButton01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/Previous"
        android:src="@drawable/previous" />

    <ImageButton
        android:id="@+id/ImageButton02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/Play"
        android:src="@drawable/play" />


    <ImageButton
        android:id="@+id/ImageButton04"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/Next"
        android:src="@drawable/next" />


    <ImageButton
        android:id="@+id/ImageButton03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/Pause"
        android:src="@drawable/pause" />


    <ImageButton
        android:id="@+id/ImageButton05"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/Stop"
        android:src="@drawable/stop" />

     </LinearLayout>


    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">


    <ListView
        android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:drawSelectorOnTop="false"/>

    <TextView
        android:id="@+id/android:empty"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="@string/NoSong"/>
    </LinearLayout>
   </LinearLayout>

Songlist . xml

<?xml version="1.0" encoding="utf-8"?>

  <TextView
   android:id="@+id/text1"
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_height="wrap_content"
   android:layout_width="wrap_content"/>

Ошибка Logcat

2020-01-28 15:52:08.532 31806-31806/? E/Zygote: v2

2020-01-28 15:52:08.532 31806-31806/? I/libpersona: KNOX_SDCARD checking this for 10347

2020-01-28 15:52:08.532 31806-31806/? I/libpersona: KNOX_SDCARD not a persona

2020-01-28 15:52:08.533 31806-31806/? E/Zygote: accessInfo : 0

2020-01-28 15:52:08.533 31806-31806/? W/SELinux: SELinux selinux_android_compute_policy_index : 
Policy Index[2],  Con:u:r:zygote:s0 RAM:SEPF_SECMOBILE_7.0_0010, [-1 -1 -1 -1 0 1]

2020-01-28 15:52:08.535 31806-31806/? I/SELinux: SELinux: seapp_context_lookup: seinfo=untrusted, 
level=s0:c512,c768, pkgname=com.example.rahul.musicdroid 

2020-01-28 15:52:08.539 31806-31806/? I/art: Late-enabling -Xcheck:jni

2020-01-28 15:52:08.562 31806-31813/? I/art: Ignoring second debugger -- accepting and dropping

2020-01-28 15:52:08.642 31806-31806/com.example.rahul.musicdroid I/MediaPlayer: Need to enable 
context aware info

2020-01-28 15:52:08.701 31806-31806/com.example.rahul.musicdroid I/home: /storage/emulated/0

2020-01-28 15:52:08.717 31806-31813/com.example.rahul.musicdroid I/art: Ignoring second debugger -- 
accepting and dropping

2020-01-28 15:52:08.745 31806-31806/com.example.rahul.musicdroid W/Activity: AppLock 
checkAppLockState locked:false verifying:false pkgName = com.example.rahul.musicdroid 
isInMultiWindowMode:false

2020-01-28 15:52:08.767 31806-31821/com.example.rahul.musicdroid I/OpenGLRenderer: Initialized EGL, 
version 1.4

2020-01-28 15:52:08.823 31806-31806/com.example.rahul.musicdroid I/InputMethodManager: [IMM] 
startInputInner - mService.startInputOrWindowGainedFocus

2020-01-28 15:52:12.170 31806-31806/com.example.rahul.musicdroid E/BoostFramework: BoostFramework() : 
Exception_1 = java.lang.ClassNotFoundException: Didn't find class "com.qualcomm.qti.Performance" on 
path: DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]]

2020-01-28 15:52:12.227 31806-31806/com.example.rahul.musicdroid E/AndroidRuntime: FATAL EXCEPTION: 
main

Process: com.example.rahul.musicdroid, PID: 31806

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

    at java.util.ArrayList.get(ArrayList.java:411)

    at com.example.rahul.musicdroid.MusicDroidActivity.playSong(MusicDroidActivity.java:214)

    at com.example.rahul.musicdroid.MusicDroidActivity$2.onClick(MusicDroidActivity.java:69)

    at android.view.View.performClick(View.java:6261)

    at android.view.View$PerformClick.run(View.java:23752)

    at android.os.Handler.handleCallback(Handler.java:751)

    at android.os.Handler.dispatchMessage(Handler.java:95)

    at android.os.Looper.loop(Looper.java:154)

    at android.app.ActivityThread.main(ActivityThread.java:6776)

    at java.lang.reflect.Method.invoke(Native Method)

    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)

    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...