2011-12-06 3 views
5

私のアンドロイドアプリケーションでは、自分のアクティビティの現在のデフォルト着信音onCreateを再生しようとしています。しかし、着信音は完全に再生されず、毎回任意の長さで停止するだけではありません。アクティビティから着信音を鳴らすのが突然停止します

コードは簡単なので、どんな助けにも感謝します。

Uri currentUri = RingtoneManager.getActualDefaultRingtoneUri(this.context, 
    RingtoneManager.TYPE_RINGTONE); 
Ringtone ringtone = RingtoneManager.getRingtone(this.context,currentUri); 
if (ringtone != null){ 
    ringtone.play(); 
} 
+0

を再生するために、この虚偽の届出をする場合、私は同じ問題を抱えているかわからないが、返されます。 – cYrixmorten

答えて

0

私はTYPE_NOTIFICATIONを使用していますが、私のコードは多かれ少なかれ同じものでした。

私は新しいハンドラ内でサウンドを再生すると、私の場合には助けたことが判明:

 Uri currentUri = RingtoneManager.getActualDefaultRingtoneUri(
       this.context, RingtoneManager.TYPE_RINGTONE); 
     final Ringtone ringtone = RingtoneManager.getRingtone(this.context, 
       currentUri); 
     if (ringtone != null) { 
      new Handler().post(new Runnable() { 

       @Override 
       public void run() { 
        ringtone.play(); 
       } 
      }); 
     } 

は、なぜこれが問題を解決しましたか?

私はRingtoneManagerがサウンドを再生するためにUIスレッドを使用する可能性があるので、UIスレッドがサウンドの再生と同時にビューの作成/描画や計算に使用されると、中断する危険性があります。

新しいハンドラを使用する場合、再生は他の操作の後までキューに入れられ、サウンドは中断されません。

少なくとも、それが私の認識です:What exactly does the post method do?

0

私は同じ問題を抱えていたと答え上記の私の場合で働いていませんでした。

しかし、着信音、通知に正常に働いていたので、私はそれは私の場合で働いていた(コンテンツのない)通知

Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

     NotificationCompat.Builder mBuilder; 
     mBuilder = 
       new NotificationCompat.Builder(this) 
       .setSound(alarmSound) 
       .setVibrate(new long[]{1000,1000}); 

     mNotificationManager.notify(ANY_INT_WILL_DO_HERE, mBuilder.build()); 

を作りました。私はこれもあなたのために働くことを願っています。私は解決策を見つけた場合

しかし、私はそれが害を行う場合、私はちょうど着信音

関連する問題