3

res/raw フォルダからオーディオ ファイルを再生しようとしています。
しかし、エラーの
準備に失敗しました: status = 0x1

私のコード:

package com.example.lvm;

import java.io.IOException;

import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
Button introAudio;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                introAudio=(Button)findViewById(R.id.introAudio);
                introAudio.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View arg0) {
                                MediaPlayer mp = new MediaPlayer();
                                String name = "greeting";
                                 mp.setOnCompletionListener(new OnCompletionListener() {

                                        @Override
                                        public void onCompletion(MediaPlayer mp) {
                                            mp.release();
                                        }

                                    });

                                try {
                                     mp.setDataSource("android.resource://com.example.lvm/raw/"+name);
                                         mp.prepare();
                                         mp.start();
                                } catch (Exception e) {
                                         Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                                }
                        }
                });
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.activity_main, menu);
                return true;
        }

}
4

3 に答える 3

4
prepare failed:status 0x1

ファイル パスにエラーがあるか、ディレクトリが正しくないか、Url または Uri が見つかったためにエラーが発生しています。

コードに従ってみてください。

 mediaplayer.setDataSource(MainActivity.this, Uri.parse("android.resource://com.example.lvm/raw/"+name)); 
 //do not add any extension to name, eg. `R.raw.your_raw_file` 

それ以外の

mp.setDataSource("android.resource://com.example.lvm/raw/"+name);
于 2013-08-28T20:01:22.367 に答える
1

31個用意MediaPlayerするのが最大のようです。32 番目を作成しようとprepareすると、このエラーで失敗します。

この場合、これを修正する方法は次のとおりです。

  1. release無駄に呼び出しMediaPlayerます。
  2. MediaPlayer作成できる数を制限します。たとえば、キュ​​ーを使用している場合は、 を試してくださいArrayBlockingQueue<T>
  3. をキャッチしIOException e、 をチェックしてください"Prepare failed.: status=0x1".equals(e.getMessage())。そうであれば、再試行してください。
于 2014-08-27T19:36:15.507 に答える
1

まず、ファイルの名前を確認します。大文字と特殊文字を含めることはできません。そのファイルを削除し、名前を変更して、環境に再度コピーします。次に、EclipseProject => Clean関数で使用します (R.java を再生成する必要があります)。名前に拡張子を追加しないことを覚えているmp.setDataSource("android.resource://com.example.lvm/raw/"+name);の代わりに使用することもできます。mediaplayer.setDataSrouce(MainActivity.this, Uri.parse("android.resource://com.example.lvm/raw/"+name));R.raw.your_raw_file

于 2013-08-28T20:10:33.660 に答える