17

MediaPlayer オブジェクトの使用に問題があり、あまり成功していません。raw フォルダーにサウンド アセットを追加し、R 内で int 値を使用して呼び出すと、正常に動作します。しかし、私はURLから物事を引き出すことができるようにしたい.

私が読んだすべてのドキュメントによると、 setDataSource() は、ファイルへの URL を持つ文字列パラメーターを受け入れる必要があります。

prepare() ステートメントで IO 例外が発生し続けます。ファイルをローカルにコピーしようとしましたが、まだダイスはありません。

誰にもアイデアはありますか?

MediaPlayer mp = new MediaPlayer();
try {
        mp.setDataSource("http://www.urltofile.com/file.mp3");
        mp.prepare();
        mp.start();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
4

2 に答える 2

23

MediaPlayer.create()を試してみてください。たとえば、プレーヤーが実際に準備ができた後でのみ開始することもできます。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MediaPlayer player = MediaPlayer.create(this, Uri.parse("http://www.urltofile.com/file.mp3"));
    player.setOnPreparedListener(new OnPreparedListener() { 
        @Override
        public void onPrepared(MediaPlayer mp) {
            mp.start();
        }
    });
}
于 2010-08-21T00:10:58.150 に答える
14

ストリームの場合、prepareAsync()十分なデータがバッファリングされるまでブロックするのではなく、すぐに戻る を呼び出す必要があります。

于 2011-06-24T12:52:14.137 に答える