1

趣味で音楽アプリを作っています。SD カードからすべての音楽ファイルを読み取ることができますが、MediaPlayer でサウンドが再生されません。メディアプレーヤーに渡すファイルへのパスがありますsetDataSourceが、何も起こらず、例外も発生しません。これが私が使用しているコードです。

Uri songUri;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_player);
        setUpViews();
        MediaPlayer mp = new MediaPlayer();

        try {
            mp.setDataSource(songUri.toString());
            mp.prepare();

        } catch (IllegalArgumentException e) {
            Toast.makeText(this, "ILLEGAL ARGUMENT EXCEPTION", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        } catch (SecurityException e) {
            Toast.makeText(this, "SECURITY EXCEPTION", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        } catch (IllegalStateException e) {
            Toast.makeText(this, "ILLEGAL STATE EXCEPTION", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        } catch (IOException e) {
            Toast.makeText(this, "IO EXCEPTION", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
          mp.start();
          Log.d("URI AFTER SET UP", songUri.toString());
    }

前に言ったように、このアクティビティを開いても何も起こりませんが、コンソールにすべての Log.d が表示されます。メディア プレーヤーで音楽を再生するための設定は他にありますか? 前もって感謝します。

4

4 に答える 4

0

オブジェクトにsetAudioStreamTypeを追加する必要があると思いますMediaPlayermp.setDataSource(your_URI);以下のように前にこれを追加できます

mp.setAudioStreamType(AudioManager.STREAM_MUSIC);

他のタイプがありAudioManager.STREAM_MUSIC、音楽プレーヤー用に選択できます

于 2013-04-23T07:27:38.063 に答える
0

MEDIASTORE-EXTERNAL_URIを照会して曲のパスを取得します。このフィールドMEDIASTORE.AUDIO.MEDIA.DATAは、曲のパス (文字列) を提供します。U はmediaplayer.setDataSource(Your_path_from_mediastore)に直接設定できます。

于 2013-04-24T10:39:30.403 に答える
0

setDataSource() にはパス引数が必要です。uri全体を文字列として渡しています。これを試して :

mp.setDataSource(songUri.getPath());
mp.prepare();
mp.start();

content://また、 uri でファイルにアクセスしようとすると、うまくいきません。file://ファイルへの実際のパス、つまりuriを見つける必要があります。

于 2013-04-22T14:48:21.110 に答える