创建mp3播放器时出现android.os.DeadObjectException错误

时间:2014-08-18 17:07:19

标签: android

当我创建一个只有一个停止按钮的简单mp3播放器时,当我运行代码时,弹出android.os.DeadObjectException错误,我无法找出背后的原因。如果你能搞清楚,请回复。 提前致谢。以下是代码,后者是LogCat视图。

package com.songs.playit;

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

import java.util.List;

import android.app.ListActivity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;



public class MainActivity extends ListActivity {

    private final static String sdPath = new String(Environment.getExternalStorageDirectory().getAbsolutePath());
    private List<String> songs = new ArrayList<String>();
    MediaPlayer mp =new MediaPlayer();

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

     Button StopPlay = (Button) findViewById(R.id.stopBtn);
        StopPlay.setOnClickListener(new OnClickListener(){          

            public void onClick(View v){
            mp.stop();
            }       

    });
    }
    private  void updatePlaylist() {
        // TODO Auto-generated method stub
        File home = new File(sdPath);
           if(home.listFiles(new Mp3Filter()).length>0){
        for(File file: home.listFiles( new Mp3Filter())){
            songs.add (file.getName());
                    }
        ArrayAdapter<String> songList= new ArrayAdapter<String>(this , R.layout.songs_item);
        setListAdapter(songList);   
           }
    }


    protected void onListItemClick(ListView list , View v , int position , long id){
        try{
            mp.reset();
                  mp.setDataSource(sdPath + songs.get(position));
            mp.prepare();
            mp.start();
        }
        catch(IOException e){
            Log.v(getString(R.string.app_name), e.getMessage());
        }
    }


  @Override
  protected void onDestroy() {
  super.onDestroy();
  }
}
  class Mp3Filter implements FilenameFilter {

    @Override
    public boolean accept(File dir, String filename) {
        // TODO Auto-generated method stub
        {
        return (filename.endsWith(".mp3"));
    }

    }


}

这是Logcat视图

08-18 12:37:12.810: E/JavaBinder(664): *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)
08-18 12:37:12.810: E/JavaBinder(664): java.lang.RuntimeException: android.os.DeadObjectException
08-18 12:37:12.810: E/JavaBinder(664):  at android.os.Parcel.writeException(Parcel.java:1366)
08-18 12:37:12.810: E/JavaBinder(664):  at android.os.Binder.execTransact(Binder.java:410)
08-18 12:37:12.810: E/JavaBinder(664):  at dalvik.system.NativeStart.run(Native Method)
08-18 12:37:12.810: E/JavaBinder(664): Caused by: android.os.DeadObjectException
08-18 12:37:12.810: E/JavaBinder(664):  at android.os.BinderProxy.transact(Native Method)
08-18 12:37:12.810: E/JavaBinder(664):  at android.content.IIntentReceiver$Stub$Proxy.performReceive(IIntentReceiver.java:124)
08-18 12:37:12.810: E/JavaBinder(664):  at android.app.ActivityThread$ApplicationThread.scheduleRegisteredReceiver(ActivityThread.java:816)
08-18 12:37:12.810: E/JavaBinder(664):  at android.app.ApplicationThreadNative.onTransact(ApplicationThreadNative.java:394)
08-18 12:37:12.810: E/JavaBinder(664):  at android.os.Binder.execTransact(Binder.java:404)
08-18 12:37:12.810: E/JavaBinder(664):  ... 1 more

0 个答案:

没有答案