2012-02-09 72 views
2

最近我開始使用Android。在播放時可以改變聲音輸出嗎?

我想要做一個小例子,以瞭解如何使用android輸出聲音。

爲了這一點,我建我播放MP3文件的程序,雖然這個遊戲可以將聲音輸出更改爲:

  • 內置揚聲器
  • 外部揚聲器
  • 耳機
  • 聽筒

這可能嗎?

我已完成部分代碼,但不知道如何從聲音輸出跳轉到另一個聲音輸出。

公共類TestAudioActivity延伸活動{

private MediaPlayer mediaPlayer; 
private ImageButton playButton; 
private ImageButton pauseButton; 
private ImageButton stopButton; 
AudioManager audioManager; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    initializeMediaPlayer(); 

    playButton = (ImageButton) findViewById(R.id.playButton); 
    pauseButton = (ImageButton) findViewById(R.id.pauseButton); 
    stopButton = (ImageButton) findViewById(R.id.stopButton); 

    playButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      if (mediaPlayer != null) 
       mediaPlayer.start(); 
      else 
       initializeMediaPlayer(); 
     } 
    }); 

    pauseButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      /** if (mediaPlayer != null) 
       mediaPlayer.pause(); */ 
      audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
      audioManager.setSpeakerphoneOn(false); 
      mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL); 

     } 
    }); 

    stopButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      if (mediaPlayer != null) { 
       mediaPlayer.stop(); 
       mediaPlayer.release(); 
       mediaPlayer = null; 
      } 
     } 
    }); 

} 

private void initializeMediaPlayer() { 
    try { 
     mediaPlayer = new MediaPlayer(); 
     mediaPlayer.setDataSource("http://server3.pianosociety.com/protected/bach-bwv772-stahlbrand.mp3"); 
     mediaPlayer.prepare(); 
    } catch (IllegalArgumentException e) { 
     // Mostramos mensaje en caso de error. 
     Toast.makeText(getApplicationContext(), "URL no encontrada", 2000); 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

}

誰能幫助?

謝謝。

回答

0

我從來沒有與媒體活動中發揮呢,不過是的,你可以改變你的聲音輸出,同時播放,例如,你可以使用

audioManager.setMode(AudioManager.MODE_IN_CALL); 
audioManager.setSpeakerphoneOn(true); 
+0

嗨佩德羅,我運行的時候補充說,你送,但不工作的代碼應用程序代碼出來,並停止執行。 – user1169292 2012-02-12 10:38:28