2012-05-05 8 views
8

RingtonePreferenceから選択された着信音を再生しようとしています。私はそれをどのようにプレイできますか?ここでRingtonePreferenceから選択した着信音の再生方法

は、ここに私のxmlファイルのコード

<RingtonePreference 
    android:title="Choose Alarm" 
    android:key="ringtone" 
    android:summary="this is summary" 
    ></RingtonePreference> 

である私は、この

Toast.makeText(getApplicationContext(), alarms, Toast.LENGTH_LONG).show(); 

のようなトーストを使用する場合、私はJavaで

SharedPreferences getAlarms = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
String alarms = getAlarms.getString("ringtone", "default ringtone"); 

をやっている、それはこの種を示したものです経路の

content://media/internal/audio/media/50 

しかし、私はこれをどのようにプレイするのか分かりません。

助けてください。

答えて

20
private void alarm(){ 
    SharedPreferences getAlarms = PreferenceManager. 
            getDefaultSharedPreferences(getBaseContext()); 
    String alarms = getAlarms.getString("ringtone", "default ringtone"); 
    Uri uri = Uri.parse(alarms); 
    playSound(this, uri); 

    //call mMediaPlayer.stop(); when you want the sound to stop 
} 


private MediaPlayer mMediaPlayer; 
private void playSound(Context context, Uri alert) { 
     mMediaPlayer = new MediaPlayer(); 
     try { 
      mMediaPlayer.setDataSource(context, alert); 
      final AudioManager audioManager = (AudioManager) context 
        .getSystemService(Context.AUDIO_SERVICE); 
      if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) { 
       mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); 
       mMediaPlayer.prepare(); 
       mMediaPlayer.start(); 
      } 
     } catch (IOException e) { 
      System.out.println("OOPS"); 
     } 
    } 

こここれは、あなたが:)私はそれが

+0

ありがとうSmartLemon。私は、BroadcastReceiverでplaySoundメソッドを呼び出しています。だから、私はそれを私の上に置くと私にこのエラーが表示されます "このタイプのテストのplaySound(Context、Uri)は引数には適用されません(新しいBroadcastReceiver(){}、Uri)" – 2619

+0

これを maybe – FabianCook

+1

ブロードキャストレシーバーはコンテキストとインテントを引数として取ります。ブロードキャストレシーバーが呼び出されるコンテキストでplaySound()を呼び出す必要があります。 – Luke

1

Hereは、Commonswareからのサンプルプロジェクトです。ダウンロードして確認することもできます。

あなたは次にあなたがMediaPlayerを使用してURIを再生することができ、あなたが使用してきている文字列から

SharedPreferences getAlarms = PreferenceManager. 
            getDefaultSharedPreferences(getBaseContext()); 
String alarms = getAlarms.getString("ringtone", "default ringtone"); 
Uri uri = Uri.parse("alarms"); 

をウリを得ることができます。

+1

を使用して着信音を再生することができます欲しいものでなければなりませんプロジェクトをチェックしましたが、それは私が望むものではありません。私が欲しいのは、どのように選んだ音を弾くことができるのかです。 – 2619

+0

私は自分の答えを編集しました。 –

+0

それを行う方法の例は、すべての人の上です:) – FabianCook

0

の作品を願っていますが、環境設定から優先着信音を取ることができ、 あなたは簡単に私はすでにRingtoneManagerクラスに

SharedPreferences getAlarms = PreferenceManager. 
           getDefaultSharedPreferences(getBaseContext()); 
String alarms = getAlarms.getString("ringtone", "default ringtone"); 
Uri uri = Uri.parse(alarms); 

Ringtone r = RingtoneManager.getRingtone(context, uri); 
r.play(); 
関連する問題