Проблемы с MediaPlayer для Android: «Ошибка (-38, 0)» и «остановить вызов в состоянии 1»

Это не звук моего устройства, даже эмулятор.

Фактически, на строке «mMediaPlayer.create (это, musicIds [0]);» , eclipse предлагает мне два варианта: «Изменить доступ к статическому с использованием« MediaPlayer »(объявление типа)» или «Добавить статический доступ» @SuppressWarnings », На Create () " . Кстати, я принимаю предложения затмения …….. но все равно не работаю.

PS Я назвал пакет из другого проекта (пейджер).

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(R.string.diff_title); setContentView(R.layout.title_layout); viewFlow = (ViewFlow) findViewById(R.id.viewflow); DiffAdapter adapter = new DiffAdapter(this); viewFlow.setAdapter(adapter); TitleFlowIndicator indicator = (TitleFlowIndicator) findViewById(R.id.viewflowindic); indicator.setTitleProvider(adapter); viewFlow.setFlowIndicator(indicator); //Set all views listView = (ListView) findViewById(R.id.listView1); listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, listeStrings)); final ImageView imv=(ImageView)findViewById(R.id.imv); imv.setImageResource(imageIds[0]); final ImageView pic = (ImageView)findViewById(R.id.Picture); pic.setImageResource(imageIds[0]); btnPlay = (ImageButton)findViewById(R.id.btnplay); btnPlay.setOnClickListener(this); btnNext = (ImageView)findViewById(R.id.imvnext); btnLast = (ImageView)findViewById(R.id.imvlast); final TextView textview = (TextView)findViewById(R.id.textView2); textview.setText(listeStrings[0]); seekBar = (SeekBar)findViewById(R.id.seekbar); //seekBar.setMax(mMediaPlayer.getDuration()); mMediaPlayer.create(this, musicIds[0]); try { if (mMediaPlayer != null) { mMediaPlayer.stop(); } mMediaPlayer.prepare(); mMediaPlayer.start(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { int songIndex = position; String songTitle=musicNames[position]; imv.setImageResource(imageIds[position]); pic.setImageResource(imageIds[position]); textview.setText(listeStrings[position]); } }); } } 

И это мой логарифт:

 08-11 07:33:19.217: E/MediaPlayer(338): stop called in state 1 08-11 07:33:19.217: E/MediaPlayer(338): error (-38, 0) 08-11 07:33:19.217: E/MediaPlayer(338): prepareAsync called in state 0 08-11 07:33:19.217: W/System.err(338): java.lang.IllegalStateException 08-11 07:33:19.227: W/System.err(338): at android.media.MediaPlayer.prepare(Native Method) 08-11 07:33:19.227: W/System.err(338): at org.taptwo.android.widget.viewflow.example.DiffViewFlowExample.onCreate(DiffViewFlowExample.java:95) 08-11 07:33:19.227: W/System.err(338): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-11 07:33:19.227: W/System.err(338): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 08-11 07:33:19.227: W/System.err(338): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 08-11 07:33:19.227: W/System.err(338): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 08-11 07:33:19.227: W/System.err(338): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 08-11 07:33:19.227: W/System.err(338): at android.os.Handler.dispatchMessage(Handler.java:99) 08-11 07:33:19.227: W/System.err(338): at android.os.Looper.loop(Looper.java:123) 08-11 07:33:19.227: W/System.err(338): at android.app.ActivityThread.main(ActivityThread.java:3683) 08-11 07:33:19.227: W/System.err(338): at java.lang.reflect.Method.invokeNative(Native Method) 08-11 07:33:19.227: W/System.err(338): at java.lang.reflect.Method.invoke(Method.java:507) 08-11 07:33:19.227: W/System.err(338): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 08-11 07:33:19.227: W/System.err(338): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 08-11 07:33:19.227: W/System.err(338): at dalvik.system.NativeStart.main(Native Method)<br> 08-11 07:33:19.257: E/MediaPlayer(338): Error (-38,0) 

Перед prepare() вам нужно сначала вызвать setDataSource(..) .

Платформа Media – очень строгая государственная машина , и она действительно громоздка для обработки всех разных состояний.

Я использовал эту небольшую оболочку, которая упрощает кодирование / отладку. Вы можете попробовать.

Что касается эмулятора – обратите внимание, что на нем поддерживаются не все форматы файлов.