Я разрабатываю простое приложение, которое должно переключаться между громкой связью и проводной гарнитурой для воспроизведения звука при нажатии кнопки. Я пытаюсь использовать функцию isWiredHeadsetOn(), но она говорит, что это устарело для Android API уровня 5 и выше. Итак, как мне проверить, воспроизводится ли сейчас звук через проводную гарнитуру, чтобы я мог перенаправить его на динамик телефона?
Примечание. Я запускаю свое приложение с наушниками, подключенными к 3,5-мм разъему телефона.
Это моя попытка кода до сих пор:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_audio_re_direct);
redirect = (Button)findViewById(R.id.redirect);
final AudioManager audio =(AudioManager)getApplicationContext().getSystemService(AUDIO_SERVICE);
redirect.setOnClickListener(new View.OnClickListener() {
@SuppressWarnings("deprecation")
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(audio.isWiredHeadsetOn())
{
audio.setWiredHeadsetOn(false);
audio.setSpeakerphoneOn(true);
Toast.makeText(getApplicationContext(), "SpeakerPhone On", Toast.LENGTH_LONG).show();
redirect.setText("Turn on headset");
}
else
{
audio.setSpeakerphoneOn(false);
audio.setWiredHeadsetOn(true);
Toast.makeText(getApplicationContext(), "Wired Headset On", Toast.LENGTH_LONG).show();
redirect.setText("Turn off headset");
}
}
});
}
Но приложение вообще не переключается. Сначала он обнаруживает наличие проводной гарнитуры, показывает всплывающее сообщение SpeakerPhone On и все. Он не переключается между ними.
Кто-нибудь, пожалуйста, помогите мне сделать эту работу. Спасибо.
setWiredHeadsetOn
устарел с уровня API 5, поэтому он не будет работать. - person ChuongPham   schedule 07.01.2014AudioManager
иTelephonyManager
, а затем использовать Reflection, чтобы делать то, что вы хотите. У меня нет примера Reflection, использующего эти классы, но вы можете найти SO для примера. - person ChuongPham   schedule 07.01.2014