0

MEDIA PLAYER で実用的に RINGTONES を再生する作業を行っています。これに先立って、すべての RINGTONES 絶対パスを SQLite DB に保存しました。着信音を再生する必要があるときは、DB からパスを取得して URI に変換し、着信音を再生する必要がありますが、以下のコードの 2 行目で NULL POINTER EXCEPTION が発生しています。

    Uri u = Uri.parse(soundpath);
    player = MediaPlayer.create(this, u);
    Context con  =getApplicationContext();
    player.setWakeMode(con,PowerManager.PARTIAL_WAKE_LOCK);
    player.setVolume(1f, 1f);
    player.start();

デバッグ時に、変数soundpathの値を/content:/media/internal/audio/media/23として取得します

私に提案してください。

EDITED : すべての着メロを HASHMAP に保存するために使用されるコード

 Ringtone ringtone = ringtoneMgr.getRingtone(currentPosition);
                System.out.println(ringtone.getTitle(this));
                File uripath=new File(ringtoneMgr.getRingtoneUri(currentPosition).toString());
   Toast.LENGTH_LONG).show();
                ringtonemap.put(ringtone.getTitle(this), uripath.getAbsolutePath());
                arraylist.add(ringtone.getTitle(this));
4

2 に答える 2

1

そのウリは正しくないようです。正しいはずですcontent://media/internal/audio/media/23- 正しく保管していますか?

それらを正しく保管していることを確認してください。それらの保存方法を変更できない場合は、いつでも正しくフォーマットしてから、MediaPlayer

soundpath = soundpath.replaceAll("/content:/", "content://");
于 2013-06-28T09:49:44.573 に答える
0

URI パスを String から File に変換していましたが、これは必須ではありませんでした。間違いはパス生成時にありました。新しいコードは以下に掲載されています。

Ringtone ringtone = ringtoneMgr.getRingtone(currentPosition);
            System.out.println(ringtone.getTitle(this));
        String  uri =ringtoneMgr.getRingtoneUri(currentPosition).toString();
Toast.LENGTH_LONG).show();
            ringtonemap.put(ringtone.getTitle(this),uri);
            arraylist.add(ringtone.getTitle(this));

着信音を鳴らさなければならないとき:

player = MediaPlayer.create(this, Uri.parse(soundpath));
于 2013-06-28T10:20:56.597 に答える