将意图过滤器操作传递给 Audible



我正在尝试从应用程序中打开 Audible 并在启动时开始 Audible 播放。 声音启动正常,但不开始播放。

声音清单文件包含:

<receiver
android:name="com.audible.application.WidgetReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="com.audible.application.app.PAUSE" />
<action android:name="com.audible.application.app.PLAY" />        
...
</intent-filter>
</receiver>

我创建了一个意向并将操作设置为清单文件中指定的操作。 但是,Audible 启动但不开始播放。

Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent =  getPackageManager().getLaunchIntentForPackage("com.audible.application");
if (intent != null) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Set Intent Action as defined in Audible Manifest 
intent.setAction("com.audible.application.app.PLAY");
getApplicationContext().startActivity(intent);
} else {
Toast.makeText(getApplication(), "Cannot launch Audible!", Toast.LENGTH_LONG).show();
}
}
});
}

我还可以尝试什么让 Audible 在发布时开始播放?

更新: 我已经设法让 Audible 开始使用 OK 谷歌开始和播放。首先,我需要打开应用程序,然后开始播放。

  • 好的谷歌打开有声
  • 好的谷歌播放

因此,我想做的是可能的。 但我不知道在表面之下叫什么"OK Google Play",让现在的玩家迸发出生命。

//open audible
val intent =
packageManager.getLaunchIntentForPackage("com.audible.application")
intent?.let { startActivity(it) }
//simulate pressing the media play button after 1 second
Timer().schedule(object : TimerTask() {
override fun run() {
(getSystemService(Context.AUDIO_SERVICE) as AudioManager).run {
dispatchMediaKeyEvent(
KeyEvent(
KeyEvent.ACTION_DOWN,
KEYCODE_MEDIA_PLAY_PAUSE
)
)
dispatchMediaKeyEvent(
KeyEvent(
KeyEvent.ACTION_UP,
KEYCODE_MEDIA_PLAY_PAUSE
)
)
}
}
}, 1000)

最新更新