2013-05-06 124 views
0

我是新來的android,我需要它爲我正在處理的項目。我需要它通過點擊按鈕來播放聲音。我遵循在線教程,但我的代碼根本不播放聲音,並且在MediaPlayer錯誤(-19,0)上出現錯誤。我嘗試了很多我在這裏看到的修復程序,但似乎無法使其工作。任何幫助?下面的代碼Android MediaPlayer無法播放按鈕上的聲音點擊

import android.media.AudioManager; 
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.widget.Button; 

public class MainActivity extends Activity { 
    MediaPlayer player; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     try { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      AudioManager audioManager = (AudioManager)  getSystemService(MainActivity.AUDIO_SERVICE); 
      audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 20, 0); 

      Button buttonHello = (Button) findViewById(R.id.button1); 
      buttonHello.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        MediaPlayer mp = Medi aPlayer.create(MainActivity.this, R.raw.button); 
        mp.start(); 
        mp.setOnCompletionListener(new OnCompletion Listener() { 
         public void onCompletion(MediaPlayer mp) { 
          mp.release(); 

         }; 
        }); 
       } 
      }); 
     } catch (Exception e) { 
      System.out.println("Error!"); 
     } 

    } 

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

} 
+1

何時出現錯誤?在'create()'或'start'上?異常中是否有任何相關的消息/跟蹤? – fiddler 2013-05-06 08:23:12

+0

(順便說一下,你應該在啓動播放器之前設置監聽器) – fiddler 2013-05-06 08:23:48

+1

將文件放到mediaplayer上的位置? – Gunaseelan 2013-05-06 08:29:09

回答

0

此鏈接http://marakana.com/forums/android/examples/59.html有很好的例子使用的MediaPlayer類從原始文件夾播放歌曲。

要在內存中播放來自文件的歌曲,您可以使用以下代碼。

MediaPlayer mp = new MediaPlayer(); 
     mp.reset(); 
     ContentValues values = new ContentValues();      
     values.put(MediaStore.Images.Media.DATA, filename.getAbsolutePath()); 
      Uri selectedImage=RingtoneDownload.this.getContentResolver().insert(
          MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 
         try { 
          mp.setDataSource(RingtoneDownload.this,selectedImage); 
          mp.prepare(); 
          mp.start(); 
         }catch (Exception e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 

此代碼在爲我設置源文件時正在工作。