Bir kulaklığın bir Android cihazına takılıp takılmadığını nasıl belirleyebilirim?Bir kulaklığın bir Android cihazına takılıp takılmadığını tespit etme.
cevap
"Kulaklık" derken, "kablolu kulaklık" mı kastediyorsunuz? Eğer öyleyse, birinin takılıp takılmadığını veya takılmadığını tespit etmek için bir niyetiniz var: ACTION_HEADSET_PLUG
.
Durumu denetlemek için, bir Bluetooth kulaklığı da varsa, bu hataya dönebilir ve ses bunun yerine yönlendirilir, ancak AudioManager.isWiredHeadsetOn()
'u kullanabilirsiniz.
Merhaba Mike, Birisi bir Blutooth kulaklık kullanıyorsa ne yapmalıyım? –
AudioManager.isWiredHeadsetOn(), bir kulaklık takılı olsun ya da olmasın, her zaman false (birkaç Gingerbread aygıtında test edilmiştir) gibi görünüyor. Çalışan bir kod örneği sağlayabiliyorsanız, bu harika olur. –
@ChadSchultz Açıklamada MODIFY_AUDIO_SETTINGS iznini eklemeniz gerekiyor. Bu yalnızca doğru duruma dönecektir. –
Bu size yardımcı olacaktır: http://developer.android.com/reference/android/content/Intent.html#ACTION_HEADSET_PLUG
Sen yayın alıcısı kullanabilirsiniz.
Yani, sen "AndroidManifest.xml"
<receiver android:name="com.juno.brheadset.HeadsetStateReceiver">
<intent-filter>
<action android:name="android.intent.action.HEADSET_PLUG"/>
</intent-filter>
</receiver>-->
Ama bu kod yazmak olabilir Bu işe yaramaz. OS bu "HEADSET_PLUG" niyetini gönderdiğinde, OS "Intent.FLAG_RECEIVER_REGISTERED_ONLY" bayrağını ayarladı. Bu nedenle, "AndroidManifest" öğeleri yerine Activity veya Service sınıfında aşağıdaki kodu yazmanız gerekir.
public class BRHeadsetActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
IntentFilter receiverFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
HeadsetStateReceiver receiver = new HeadsetStateReceiver();
registerReceiver(receiver, receiverFilter);
}
Umarım bu makale size yardımcı olur. Hoşçakal!
Bu "HeadsetObserver.java", Android SDK Kaynağı'nın bir parçasıdır. o kullanıcı izni MODIFY_AUDIO_SETTINGS
gerektirdiğinden
private final void sendIntent(int headset, int headsetState, int prevHeadsetState, String headsetName) {
if ((headsetState & headset) != (prevHeadsetState & headset)) {
// Pack up the values and broadcast them to everyone
Intent intent = new Intent(Intent.ACTION_HEADSET_PLUG);
**intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);**
int state = 0;
int microphone = 0;
if ((headset & HEADSETS_WITH_MIC) != 0) {
microphone = 1;
}
if ((headsetState & headset) != 0) {
state = 1;
}
intent.putExtra("state", state);
intent.putExtra("name", headsetName);
intent.putExtra("microphone", microphone);
if (LOG) Slog.v(TAG, "Intent.ACTION_HEADSET_PLUG: state: "+state+" name: "+headsetName+" mic: "+microphone);
// TODO: Should we require a permission?
ActivityManagerNative.broadcastStickyIntent(intent, null);
}
}
-cmcromance kodunuzu açıklayabilir misiniz? – Sumit
@Sumit Çok üzgünüm. Şimdi tekrarını gördüm. Kodumdan ne anlatabilirim senin için? :) – cmcromance
@Sumit Ok. Bence bunu anlamıyorsun. Yayınlamak için "FLAG_RECEIVER_REGISTERED_ONLY" ifadesini eklerseniz, 'AndroidManifest.xml' kodunda sadece "registerReceiver (...)" yazdığımda yayınınızı alabilirim. – cmcromance
AudioManager.isWiredHeadsetOn()
hep false
dönün.
Cevabı bulan birkaç gün geçirdim. Bu konuyla ilgili resmi bilgi bulunmamaktadır. Ve bu bug
zaten BugTracker
kayıtlı.
- 1. Kulaklıkların VBScript ile takılıp takılmadığını tespit etme
- 2. Android cihazına simüle edilmiş bir kamera ekleme
- 3. Tost mesajlarını tespit etme
- 4. Web Audio'da kulaklığın çalınması
- 5. Kurulum sırasında Telefon Satıcısı'nı Tespit Etme
- 6. python'da sesli harfleri tespit etme
- 7. Paypal Abonelik İptalini Tespit Etme
- 8. GWT'de yenileme olayını tespit etme
- 9. Android ortamında veri kullanımını tespit etme hakkında bilgi edinin
- 10. Android Çoklu Pencere Desteği: Durum çubuğunun görünüp görünmediğini tespit etme?
- 11. Android - Çevirme cihazına alt (odaklanmış) bir sınır nasıl eklenir?
- 12. PNG görüntü dosyasının Saydam bir görüntü olup olmadığını tespit etme?
- 13. Bir raydaki değişiklikleri tespit etme has_many: yoluyla ilişkilendirme
- 14. Sınırlandırılmış bir metin dosyasını liste görünümüne yüklemeden önce tespit etme
- 15. Swift'teki tuşa basma olayını tespit etme
- 16. UIViewController: matkabı ve delme işlemini tespit etme
- 17. RSS beslemesinde yeni yeni öğeler tespit etme
- 18. Rota Değişimi Reaktif yönlendiriciyle Tespit Etme
- 19. Uygulama ön plan olayını tespit etme
- 20. FTP sunucusundan Android cihazına nasıl dosya indirilir?
- 21. hola eklentisi olan kullanıcıları tespit etme
- 22. jQuery var olmayan öğeyi tespit etme
- 23. keşfedilemeyen bluetooth cihazına bağlan
- 24. Ne kadar kullanıcı kaydırdığını tespit etme
- 25. Android'de 4K UHD ekranlarını tespit etme
- 26. Tespit Etme Geri Dönüşüm öğeleri öğelerin dışında
- 27. pandalar veri çerçevesindeki olayları tespit etme
- 28. Tarayıcıyı Tespit Etme Asp.net üzerinde kapat
- 29. SmartLock cihazına
- 30. Android VideoView - Videodaki zaman noktasını tespit edin
Bir Uygulama geliştiriyorum ... Ve eminim bilmeliyim .... Kullanıcı ben de soru sorsa ben de soru sorabilir miyim –
Sorunu, eğer ne sormak istiyorsanız, lütfen düzeltin o. – Mudassir
@Mudassir Düzeltme için teşekkürler :) –