当我创建一个只有一个停止按钮的简单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