2011-12-06 35 views
5

Trong ứng dụng Android của tôi, tôi đang cố gắng phát nhạc chuông mặc định hiện tại trênTạo hoạt động của tôi. Nhưng nhạc chuông sẽ không chỉ chơi hoàn toàn và dừng lại ở độ dài tùy ý mỗi lần.Phát nhạc chuông từ một hoạt động dừng đột ngột

Mã đơn giản như mọi khi, mọi trợ giúp sẽ được đánh giá cao.

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

Tôi gặp vấn đề tương tự, sẽ trở lại nếu tôi tìm được giải pháp. – cYrixmorten

Trả lời

0

Tôi đang sử dụng TYPE_NOTIFICATION nhưng Appart từ đó mã của tôi là nhiều hay ít giống hệt nhau.

tôi thấy rằng chơi các âm thanh bên trong một Handler mới giúp trong trường hợp của tôi:

 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(); 
       } 
      }); 
     } 

Tại sao điều này giải quyết vấn đề?

Tôi tin rằng RingtoneManager có thể sử dụng chuỗi giao diện người dùng để phát âm thanh, vì vậy nếu chuỗi giao diện người dùng được sử dụng để tạo/vẽ chế độ xem hoặc thực hiện các phép tính cùng lúc với âm thanh được phát, nó có thể bị gián đoạn.

Khi sử dụng trình xử lý mới, phát lại được xếp hàng đợi cho đến sau các thao tác khác, để âm thanh không bị gián đoạn.

Ít nhất đó là nhận thức của tôi: What exactly does the post method do?

0

tôi đã cùng một vấn đề và trên câu trả lời không làm việc trong trường hợp của tôi.

Nhưng nhạc chuông làm việc bình thường trong thông báo vì vậy tôi đã thông báo (không có nội dung)

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()); 

Nó làm việc trong trường hợp của tôi. Tôi hy vọng điều này cũng phù hợp với bạn.

Nhưng tôi không chắc liệu nó có gây hại gì không nếu tôi thực hiện thông báo sai này chỉ để phát nhạc chuông

Các vấn đề liên quan