gpt4 book ai didi

java - 注册为音乐播放器并播放歌曲

转载 作者:搜寻专家 更新时间:2023-10-30 21:33:42 24 4
gpt4 key购买 nike

我正在创建一个音乐播放器应用程序,我想将该应用程序注册为音乐播放器。因此,当用户点击要播放的任何歌曲时,我的应用程序应该被建议为音乐播放器之一。我关注了this guide .

我在 manifest.xml 中添加必要的代码后,它只在建议中显示我的应用程序。当我选择我的应用程序时,没有播放任何内容。我认为在主要 Activity 中应该有类似接收器的东西来接收播放所选歌曲的媒体路径。但我不知道如何实现这一点。

我已将以下代码添加到我的 manifest.xml(供引用):

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file"/>
<data android:mimeType="audio/*"/>
<data android:mimeType="application/ogg"/>
<data android:mimeType="application/x-ogg"/>
<data android:mimeType="application/itunes"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:mimeType="audio/*"/>
<data android:mimeType="application/ogg"/>
<data android:mimeType="application/x-ogg"/>
<data android:mimeType="application/itunes"/>
</intent-filter>
<intent-filter
android:priority="-1">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="content" />
<data android:mimeType="audio/*"/>
<data android:mimeType="application/ogg"/>
<data android:mimeType="application/x-ogg"/>
<data android:mimeType="application/itunes"/>
</intent-filter>

最佳答案

添加 IntentFilters 后,使用 getIntent() 从中获取数据

@Override
protected void onCreate(@Nullable final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handleIntent(getIntent());
}

@Override
protected void onNewIntent(final Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
handleIntent(intent);
}

private void handleIntent(@NonNull final Intent intent) {
if (Intent.ACTION_VIEW.equals(intent.getAction())) {
try {
IntentHandler.onActionView(intent);
} catch (IOException e) {
// Handle error
}
}
}

IntentHandler.java

final class IntentHandler {

private static final String TAG = "IntentHandler";

private IntentHandler() {

}

static void onActionView(@NonNull final Intent intent) throws IOException {
final Uri data = intent.getData();
if (data == null) {
Log.w(TAG, "Intent data is null");
throw new IOException("Intent data is null");
}

final String scheme = data.getScheme();
if (scheme == null) {
Log.w(TAG, "Uri scheme is null");
throw new IOException("Uri scheme is null");
}
switch (scheme) {
case "file":
playFile(data);
break;

case "content":
playContent(data);
break;

case "http":
playHttp(data);
break;

default:
Log.w(TAG, "Unhandled Uri scheme: " + scheme);
throw new IOException("Unhandled Uri scheme: " + scheme);
}
}

private static void playFile(@NonNull final Uri data) throws IOException {
Log.d(TAG, "playFile() path = " + data.getPath());
// Play a plain file
}

private static void playContent(@NonNull final Uri data) throws IOException {
Log.d(TAG, "playContent() " + data);
// Use ContentResovler to query the Uri
}

private static void playHttp(@NonNull final Uri data) throws IOException {
Log.d(TAG, "playHttp() " + data);
// Play from network
}
}

如果您不支持从 ContentProvider 或网络播放,请相应地从 AndroidManifest.xml 中删除“http”或“content”方案的 IntentFilter

关于java - 注册为音乐播放器并播放歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40362061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com