我有一个可以接收音频文件并用MediaPlayer播放的Service。我就是这么叫我的Service的
private void playAudio(String url) throws Exception {
Intent music = new Intent(this,MusicService.class);
music.putExtra("paths", path);
startService(music);
}这是我的Service类:
class MusicService extends Service implements OnCompletionListener {
MediaPlayer mediaPlayer;
String musicFile;
@Override
public void onCreate() {
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnCompletionListener(this);
Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_LONG).show();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Bundle e = intent.getExtras();
musicFile= e.getString("paths");
try {
mediaPlayer.prepare();
mediaPlayer.setDataSource(musicFile);
} catch (IllegalArgumentException i) {
// TODO Auto-generated catch block
i.printStackTrace();
} catch (IllegalStateException i) {
// TODO Auto-generated catch block
i.printStackTrace();
} catch (IOException i) {
// TODO Auto-generated catch block
i.printStackTrace();
}
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
return START_STICKY;
}
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
}Service永远不会执行,Toast永远不会显示,MediaPlayer也不会播放。
我在我的清单中这样声明:
<service android:name=".MusicService" android:enabled="true"></service>我得到了一个强制关闭错误,在我的日志中有这个IllegalAccessException:
java.lang.RuntimeException: Unable to instantiate service unjustentertainment.com.MusicService:
java.lang.IllegalAccessException: access to class not allowed发布于 2011-11-27 02:25:23
你得到的异常是因为系统无法初始化你的服务(调用它的构造函数),因为它是不可访问的。
正如它所说的here
...Make确保类声明为公共...
您发布的类不是公共的,因此将其设置为公共的。
发布于 2011-11-27 02:29:18
您需要将您的类公开。即
public class MusicService extends Service implements OnCompletionListener {
MediaPlayer mediaPlayer;
String musicFile;https://stackoverflow.com/questions/8280035
复制相似问题