2014-01-27 140 views
0

當我點擊按鈕時,鴨子mediaplayer文件應該啓動,但應用程序只是崩潰。 幫助將不勝感激,謝謝。嘗試使用onclicklistener播放媒體,當我點擊應用程序崩潰時

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

public class MainActivity extends Activity { 

Button ducksplay, ducksstop; 
MediaPlayer ducks; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ducksplay = (Button) findViewById(R.id.ducksplay); 
    ducksstop = (Button) findViewById(R.id.ducksstop); 
    ducksplay.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      ducks.start(); 
     } 
    }); 
} 


} 
+1

請分享日誌中的異常?鴨子參考在哪裏初始化?可能是這樣的問題 – kedark

+0

請參閱此鏈接:http://software.intel.com/zh-cn/articles/android-mediaplayer-sample-code-walkthrough-on-intel-architecture您需要在啓動之前初始化媒體播放器 – kedark

+0

謝謝,我添加了「MediaPlayer ducks = MediaPlayer.create(this,R.raw.ducks);」到活動 – user3238859

回答

0

如果這真的是整個類,它會崩潰,因爲你沒有MediaPlayer實例,它是一個空指針。否則,在Java中的C++中,Object變量始終是一個引用,用null初始化。

所以,你將需要的onCreate一個鴨子=新的MediaPlayer()


然後,MediaPlayer的內部有一個狀態機,必須遵循

您必須爲本地播放做的最小值:

  1. 實例化一個MediaPlayer對象
  2. setDataSouce選手對象
  3. 準備的選手對象
  4. 開始

你必須遠程回放做的最小值爲:

  1. 實例化一個MediaPlayer對象
  2. setDataSouce選手客體
  3. setOnPreparedListener在上玩家對象
  4. async準備玩家對象
  5. 等待onPreparedListener在玩家對象

作爲參考上監聽通話開始叫

  • 請大家看看MediaPalyer狀態圖:

    http://developer.android.com/reference/android/media/MediaPlayer.html

    而且從未忘記在Java中爲您的類成員引用添加instanciate對象,否則它們爲空。

  • 相關問題