23

通知でサウンドを再生するためにアセットフォルダーにサウンドファイルを添付していますが、アセットフォルダーからサウンドを再生できません。

通知の音を設定したり、音を鳴らしたりできる設定ページがあります。この部分は完了です。メディアプレーヤーを使用してアセットフォルダからサウンドを再生できます。通知の作成時に同じロジックを使用できますが、メディアプレーヤーがまだサウンドを再生しているため、ユーザーが通知をクリックすると問題が発生する可能性があります。

私は試した

notification.sound = Uri.parse("file:///android_asset/Sound/Long/AlarmClock.mp3");

このようにも試してみました

notification.sound = Uri.parse("android_asset/Sound/Long/AlarmClock.mp3");

しかし、私の問題はまだ解決されていません。

アセットディレクトリからの通知にサウンドを設定する他の方法はありますか?

Logcat

01-10 09:57:01.509: ERROR/PlayerDriver(31): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported
01-10 09:57:01.509: ERROR/MediaPlayer(52): error (1, -4)
01-10 09:57:01.519: WARN/NotificationService(52): error loading sound for android_asset/Sound/Long/audio.mp3
01-10 09:57:01.519: WARN/NotificationService(52): java.io.IOException: Prepare failed.: status=0x1
01-10 09:57:01.519: WARN/NotificationService(52):     at android.media.MediaPlayer.prepare(Native Method)
01-10 09:57:01.519: WARN/NotificationService(52):     at android.media.AsyncPlayer.startSound(AsyncPlayer.java:64)
01-10 09:57:01.519: WARN/NotificationService(52):     at android.media.AsyncPlayer.access$200(AsyncPlayer.java:33)
01-10 09:57:01.519: WARN/NotificationService(52):     at android.media.AsyncPlayer$Thread.run(AsyncPlayer.java:99)
01-10 09:57:01.519: WARN/PlayerDriver(31): PVMFInfoErrorHandlingComplete

または他のアイデア?ヒントを教えてください。

4

6 に答える 6

37

に mp3 ファイルを入れてres->raw folder、 からサウンド ファイルを取得してみてくださいraw folder

Uri path = Uri.parse("android.resource://com.androidbook.samplevideo/" + R.raw.myvideo);

また

Uri path = Uri.parse("android.resource://com.androidbook.samplevideo/raw/myvideo");
于 2012-01-10T09:56:51.000 に答える
8

これは私にとって完璧に機能しました。別の投稿で見つけました。

notification.sound = Uri.parse("android.resource://my.package.name/raw/notification");
于 2012-12-11T21:49:14.880 に答える
4

アセットはそのアプリのプライベート リソースです。それらを着信音として設定することはできないと思います。着信音を設定するには、メディア プロセスからアクセスできるパブリック ファイルが必要です。着信音として設定するには、ファイルを SD カードにコピーする必要があります。

于 2012-01-10T10:03:28.927 に答える
0

ContentProvider がその方法です。@Dharmendraが示唆するように、ファイルをデータディレクトリにコピーする必要はないと思います。ContentProvider を介してアセット フォルダーに直接アクセスできます。

public AssetFileDescriptor openAssetFile(Uri uri, String mode)
        throws FileNotFoundException {
    String filePart = Sound.getSoundFileName(uri);

    try {
        return getContext().getResources().getAssets().openFd(filePart + ".ogg");
    }catch(IOException e) {
        Log.d(TAG, "fail " + e.getMessage());

    }
    return null;
}
于 2012-11-22T05:16:07.427 に答える
0

アセットの音声ファイルに通知に直接アクセスできませんでした。だから私はこの手順に従うので、通知でオーディオを再生できます

  1. そのファイルをデータ ディレクトリにコピーします。
  2. まだデータ ディレクトリは通知音にアクセスできないためContent Provider、データ フォルダーにある続きを読むでオーディオ ファイルを共有するカスタムを作成します。
  3. 通知の作成時に、ファイルの Uri を通知音に設定しました。

この手順を使用して、通知にカスタムサウンドを設定できます。

于 2012-01-12T08:44:49.097 に答える
0

アセット フォルダーから何かをロードするための正しいパスはfile:///android_assets/relative_path_to_your_file. ここで3 つのスラッシュに注意してください。この方法で通知音を設定しようとしたことはありませんが、これを WebView で何度も使用して成功し、同じように機能することを期待しています。

于 2012-01-10T09:56:40.370 に答える