我想在框架級別使用的MediaPlayback服務(在音樂應用程序實現),步驟是:麻煩時,使用遠程服務通信(在Android框架級別使用IMediaPlaybackService)
添加Java文件中這些代碼(也加IMediaPlaybackService.aidl在同一目錄)總部設在/框架/基/核心/ JAVA/COM /安卓
private IMediaPlaybackService mMediaPlaybackService = null;
private boolean isServiceConn = false;
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
mMediaPlaybackService = IMediaPlaybackService.Stub.asInterface(service);
isServiceConn = true;
}
public void onServiceDisconnected(ComponentName className) {
}
};
public void funcXXX() {
...
if(isServiceConn == false) {
mContext.bindService(new intent("com.android.music.MediaPlaybackService"), mConnection, Context.BIND_AUTO_CREATE);
}
...
}
public void onClick(View v) {
try {
mMediaPlaybackService.prev();// play previous track
} catch(RemoteException ex) {
}
}
成功綁定和mMediaPlaybackService的值被修正,但服務當我點擊一個按鈕,並執行聲明「mMediaPlaybackService.prev()」,progrem將崩潰,logcat轉儲爲:
E/AndroidRuntime( 259): java.lang.SecurityException: Binder invocation to an incorrect interface
E/AndroidRuntime( 259): at android.os.Parcel.readException(Parcel.java:1327)
E/AndroidRuntime( 259): at android.os.Parcel.readException(Parcel.java:1281)
E/AndroidRuntime( 259): at com.android.internal.widget.IMediaPlaybackService$Stub$Proxy.prev(IMediaPlaybackService.java:457.
請提出可能會出現什麼問題在這裏,任何幫助將不勝感激。 如果您簡要解釋如何使用bindService或IPC,它也會很有幫助。