Android 安卓-与设备交互';来自widget的音乐应用程序
我意识到音乐应用程序可能是相同的,也可能不是相同的,这取决于设备,但我正在为自己的设备编写此应用程序 我是否正确地认为我需要用我的小部件创建一个服务,然后以某种方式将此服务绑定到com.android.music.MediaPlaybackService 我没有找到多少关于这方面的有用文档,但从市场上看,有很多小部件可以做同样的事情。我已经看到一些StackOverflow的回答说这是不可能的,但同时,我已经安装了几个小部件,正好可以做到这一点Android 安卓-与设备交互';来自widget的音乐应用程序,android,Android,我意识到音乐应用程序可能是相同的,也可能不是相同的,这取决于设备,但我正在为自己的设备编写此应用程序 我是否正确地认为我需要用我的小部件创建一个服务,然后以某种方式将此服务绑定到com.android.music.MediaPlaybackService 我没有找到多少关于这方面的有用文档,但从市场上看,有很多小部件可以做同样的事情。我已经看到一些StackOverflow的回答说这是不可能的,但同时,我已经安装了几个小部件,正好可以做到这一点 有没有人做过类似的事情,可以为我指明正确的方向?这
有没有人做过类似的事情,可以为我指明正确的方向?这并不是说这不可能,而是因为它没有记录在案,而且不受支持。此外,您假定的方法也行不通,因为该服务不再基于导出。大约10个月前,它被锁定在源代码中,因此它可能不会在姜饼和蜂窝上导出。至少在安卓2.2.2中,这种方法是有效的 我为我的小部件创建了一个服务。此服务的onCreate绑定到com.android.music.imediplaybackservice 此服务的onStart检查“command”标志,并相应地通过专用ServiceConnection运行绑定服务的相应方法,然后密钥在每个命令后清除连接,例如:
private ServiceConnection mConnection = new ServiceConnection(){
public void onServiceConnected(ComponentName className,
IBinder service) {
mService = IMediaPlaybackService.Stub.asInterface(service);
//Toast.makeText(getApplicationContext(), "!!!", Toast.LENGTH_SHORT).show();
try {
if (mService.isPlaying()) {
mService.pause();
} else {
mService.play();
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
unbindService(mConnection);
}
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
mService = null;
}
};
这是不幸的。不过我有弗罗约。我一直在查看AOSP音乐应用程序和开源Last.FM应用程序的源代码,乍一看,Last.FM似乎在做我打算做的事情,但你是说所有这些应用程序都不能在姜饼和更高版本上工作吗?@aperture:我是说根据源代码,大约10个月前,该服务被标记为未出口。我不确定这种改变是否会使它变成姜饼和蜂窝状,但似乎有可能。