Tôi có tai nghe BT không phải là tai nghe A2DP (Plantronics 510) và muốn sử dụng nó với Android HTC Magic để nghe âm thanh chất lượng thấp như podcast/âm thanh sách.Định tuyến âm thanh sang Tai nghe Bluetooth (không A2DP) trên Android
Sau nhiều lần googling tôi thấy rằng chỉ có thể chuyển âm thanh cuộc gọi điện thoại đến tai nghe BT không A2DP. (Tôi muốn biết nếu bạn đã tìm thấy giải pháp sẵn sàng để định tuyến tất cả các loại âm thanh đến tai nghe BT không A2DP)
Vì vậy, tôi đã lập trình bằng âm thanh cho luồng mang âm thanh cuộc gọi điện thoại. Bằng cách này tôi sẽ đánh lừa điện thoại để mang âm thanh mp3 của tôi đến tai nghe BT của tôi. Tôi đã viết theo mã đơn giản.
import android.content.*;
import android.app.Activity;
import android.os.Bundle;
import android.media.*;
import java.io.*;
import android.util.Log;
public class BTAudioActivity extends Activity
{
private static final String TAG = "BTAudioActivity";
private MediaPlayer mPlayer = null;
private AudioManager amanager = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
amanager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
amanager.setBluetoothScoOn(true);
amanager.setMode(AudioManager.MODE_IN_CALL);
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(new FileInputStream(
"/sdcard/sample.mp3").getFD());
mPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
mPlayer.prepare();
mPlayer.start();
} catch(Exception e) {
Log.e(TAG, e.toString());
}
}
@Override
public void onDestroy()
{
mPlayer.stop();
amanager.setMode(AudioManager.MODE_NORMAL);
amanager.setBluetoothScoOn(false);
super.onDestroy();
}
}
Như bạn có thể thấy tôi đã cố gắng kết hợp các phương pháp khác nhau mà tôi nghĩ sẽ đánh lừa điện thoại để tin rằng âm thanh của tôi là một cú điện thoại:
- Sử dụng setAudioStreamType MediaPlayer của (STREAM_VOICE_CALL)
- sử dụng AudioManager của setBluetoothScoOn (đúng)
- sử dụng bộ mã hóa của AudioManager (MODE_IN_CALL)
Nhưng không có điều nào ở trên hiệu quả. Nếu tôi loại bỏ các cuộc gọi AudioManager trong đoạn mã trên, âm thanh phát từ loa và nếu tôi thay thế chúng như được hiển thị ở trên thì âm thanh sẽ ngừng phát ra từ loa nhưng nó không đi qua tai nghe BT. Vì vậy, điều này có thể là một phần thành công.
Tôi đã kiểm tra xem tai nghe BT có hoạt động tốt với các cuộc gọi điện thoại không.
Phải có lý do để Android không hỗ trợ tính năng này. Nhưng tôi không thể buông bỏ cảm giác rằng không thể định tuyến lại âm thanh một cách có lập trình. Bất kỳ ý tưởng?
P.S. trên mã cần sau phép
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
Bạn có thể không cần tự viết mã. Đơn giản chỉ cần cài đặt một ứng dụng miễn phí được thiết kế để làm những gì bạn muốn. Xem câu hỏi Android.SE: ["Có thể hướng tất cả đầu ra âm thanh, bao gồm đầu ra âm nhạc, đến tai nghe Bluetooth không?"] (Http://android.stackexchange.com/questions/19336/is-it-possible- để-trực tiếp-tất cả-âm thanh-đầu ra-to-a-bluetooth-tai nghe) Tôi đã thử một vài ứng dụng khác nhau. Cuối cùng, "Mono Bluetooth Router" là người duy nhất làm việc cho tôi. – unforgettableid