2016-04-28 135 views
0

我正在用開始,暫停,停止按鈕創建媒體播放器。開始和停止按鈕工作正常,問題是與暫停按鈕。在Android應用程序中播放媒體播放器

當沒有音頻文件播放(並且也沒有在所有暫停任何音頻),如果我點擊暫停按鈕,它會拋出此錯誤消息:

不幸的是應用程序已經停止

問題是什麼?

public class activity_12 extends Activity { 

    MediaPlayer sound; 
    int paused; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_12); 
    } 
    public void Play(View view) { 
     if(sound==null) { 
      sound=MediaPlayer.create(this,R.raw.fil); 
      sound.start(); 
     }else if(!sound.isPlaying()) { 
      sound.seekTo(paused); 
      sound.start(); 
     } 
    } 
    public void Pause(View view) { 
     sound.pause(); 
     paused=sound.getCurrentPosition(); 
    } 
    public void Stop(View view) { 
     sound.release(); 
     sound=null; 
    } 
} 
+0

請顯示您的代碼@ Mohammed Farhan – Lampard

+0

是的,你永遠告訴是ryt。但如果在沒有音頻播放的情況下任何機身錯過觸摸暫停按鈕,則會顯示錯誤信息,正如我在*上面*所示。我只是想停止錯誤的顯示在暫停按鈕的錯誤觸摸上。 –

+0

而且我還使用了你的代碼,但它再次顯示錯誤消息。 Plzz幫我把它卵形。 –

回答

1

你面臨的問題,因爲你沒有申報的功能properly.Please檢查這個代碼:

定義你的XML是這樣的:

<RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 
    <Button 
     android:id="@+id/button1" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/textView1" 
     android:layout_below="@+id/textView1" 
     android:layout_marginTop="48dp" 
     android:text="start" /> 

    <Button 
     android:id="@+id/button2" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/button1" 
     android:layout_toRightOf="@+id/button1" 
     android:text="pause" /> 

    <Button 
     android:id="@+id/button3" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/button2" 
     android:layout_toRightOf="@+id/button2" 
     android:text="stop" /> 

</RelativeLayout> 

你應該這樣定義你的活動:

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

public class MainActivity extends Activity { 
    Button start,pause,stop; 
    MediaPlayer mediaPlayer; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     start=(Button)findViewById(R.id.button1); 
     pause=(Button)findViewById(R.id.button2); 
     stop=(Button)findViewById(R.id.button3); 
     //creating media player 
     mediaPlayer= new MediaPlayer(); 



     start.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mediaPlayer.start(); 
      } 
     }); 
     pause.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mediaPlayer.pause(); 
      } 
     }); 
     stop.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mediaPlayer.stop(); 
      } 
     }); 
    } 
} 
0

作爲參考,MediaPlayer的狀態非常特殊。如果在錯誤的時間調用isPlaying()等狀態檢查功能,或者在錯誤的時間調用.pause(),它將自動轉換到錯誤狀態。你需要親自跟蹤狀態。

退房的MediaPlayer的文檔,特別是State Diagram

而對於暫停其關於說,它是有關國家在調用pause()功能:

這種方法的成功調用處於有效狀態將對象轉移到暫停狀態。在無效狀態下調用此方法會將對象轉換爲錯誤狀態。

MediaPlayer的錯誤狀態會調用崩潰。