2011-09-22 63 views
2

我在播放音頻(mp3)文件時遇到問題,這個音樂文件就像點擊聲音它駐留在原始文件夾,問題是如果有很多點擊以隨機間隔它會拋出一個nullPointer的例外。它發生在點擊完成並隨時發生的任何地方,是否與內存問題或MediaPlayer相關問題有關,請提供任何建議。 它的簡單的媒體播放器對象即時通話,但它的一個遊戲等接觸它播放文件,所以在遊戲中我有很多東西拖動,所以我想在當時點擊聲音,有時它工作正常,但當超過一定限制它會拋出空指針異常。這是代碼:在播放MP3文件的問題在android

MediaPlayer mp= MediaPlayer.create(context,R.raw.soun1); 
    mp.start(); 

完蛋了:

+1

把您的代碼放在這裏,以便我們可以幫到你 –

+0

我編輯了m y question –

+0

我已經發布了我的答案請嘗試一下 –

回答

0

MediaPlayer mp = new MediaPlayer(); 
    mp= MediaPlayer.create(this,R.raw.soun1); 
    mp.start(); 

許可得到了我的答案,它的SoundPool,特別是當聲音文件被連續使用的應用程序所關注的遊戲時創建的,所以在這裏我們應該使用除MediaPlayer之外的SoundPool。

1

只是試試這個::清單文件:::

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 
+1

爲什麼要創建一個默認的構造MediaPlayer,如果你要馬上鬆開它? –

+0

爲什麼要聲明外部存儲的權限,當所有事情都在手機內存 –

+0

上完成時,您需要授予此權限以將數據存儲在sdcard中,就像this.this就像外部部件。 –

0

問題在於MP3編碼。我嘗試了相同的代碼,很少工作,很少不工作。所以,如果下一次顯示相同的錯誤,請嘗試使用另一個。

+0

問題不在於mp3編碼,其實與系統有關,媒體播放器在不斷播放聲音時會返回null,每次創建媒體播放器的實例都會導致錯誤,所以特別針對遊戲,這裏的android提供了soundpool api。 –

+0

android開發人員網站說,如果對象爲null,則無法創建該對象。 http://developer.android.com/reference/android/media/MediaPlayer.html#create%28android.content.Context,%20int%29 –

+0

No..i在Activity中寫了一個2行代碼,它只是播放它一次......音頻大約是30秒。但它根本不起作用。當把mp3改成其他的時候,它立即播放。 – nithinreddy

1

要播放的媒體播放器......我們需要兩個類.. 讓我們假設mainactivity.java是我們的第一個文件.. 這裏我們定義兩個按鈕 - start_button & stop_button

mButton_start.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Intent mIntent=new Intent(MainActivity.this,maservice.class); 
     startService(mIntent); 

    } 
}); 
mButton_stop.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Intent mIntent=new Intent(MainActivity.this,maservice.class); 
     stopService(mIntent); 

    } 
}); 

maservice.java是我們的另一個java文件。在這裏我們定義媒體播放器,也應該有3個方法:onCreate(),onStart(),onDestroy()。

下面是代碼:

MediaPlayer mPlayer; 
@Override 
public void onCreate() 
{ 
    super.onCreate(); 
    mPlayer=MediaPlayer.create(this, R.raw.kyun); 
    mPlayer.setLooping(true); 
} 
@Override 
public void onStart(Intent miIntent, int startid) 
{ 
    super.onStart(miIntent, startid); 
    mPlayer.start(); 

} 

@Override 
public void onDestroy() 
{ 
    super.onDestroy(); 
    mPlayer.stop(); 
} 

我們也有清單文件來定義

  • mainactivity.java下活動標籤
  • 定義這些Java文件,但maservice.java定義根據服務標籤
+0

在我的情況下,在onCreate中啓動mediaPlayer是個問題。我看到了你的代碼,並在onStart中開始修復它。謝謝 –