2011-12-06 17 views
5

मेरे एंड्रॉइड एप्लिकेशन में, मैं अपनी गतिविधि के वर्तमान डिफ़ॉल्ट रिंगटोन को चलाने की कोशिश कर रहा हूं। लेकिन रिंगटोन पूरी तरह से खेल नहीं पाएगा और हर बार मनमाने ढंग से लंबाई पर रुक जाएगा।किसी गतिविधि से रिंगटोन बजाना अचानक

कोड जितना आसान हो सकता है उतना आसान है, किसी भी मदद की सराहना की जाएगी।

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

क्यों इस समस्या को हल किया?

मेरा मानना ​​है कि रिंगटोन प्रबंधक ध्वनि चलाने के लिए यूआई थ्रेड का उपयोग कर सकता है, इसलिए यदि यूआई थ्रेड का उपयोग दृश्यों को बनाने/खींचने के लिए किया जाता है या ध्वनि के साथ एक ही समय में गणना करता है, तो इसे बाधित होने का जोखिम होता है।

एक नया हैंडलर का उपयोग करते समय, प्लेबैक अन्य परिचालनों के बाद तक कतारबद्ध होता है, जिससे ध्वनि निर्बाध हो जाती है। 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()); 

यह मेरे मामले में काम किया बनाया है। मुझे आशा है कि यह आपके लिए भी काम करेगा।

लेकिन मैं सिर्फ रिंगटोन