Từ phía bên android, tôi nghĩ rằng giải pháp tốt nhất là để mở kết nối với dịch vụ trong máy tính của bạn:
URL url = new URL("http://192.186.0.1/path/to/service");
URLConnection connection = url.openConnection();
Nhận nó như một OutputStream:
OutputStream out = new BufferedStream(connection.getOutputStream());
và sau đó sử dụng số AudioRecord
để gửi dữ liệu được ghi lại:
public static final int DEFAULT_SAMPLE_RATE = 8000;
private static final int DEFAULT_BUFFER_SIZE = 4096;
private static final int CALLBACK_PERIOD = 4000;
AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT,
DEFAULT_SAMPLE_RATE, AudioFormat.CHANNEL_CONFIGURATION_DEFAULT,
AudioFormat.ENCODING_DEFAULT, DEFAULT_BUFFER_SIZE);
recorder.setPositionNotificationPeriod(CALLBACK_PERIOD);
int bytesRead = 0;
ByteBuffer buffer = ByteBuffer.allocateDirect(DEFAULT_BUFFER_SIZE);
while ((bytesRead = recorder.read(buffer, DEFAULT_BUFFER_SIZE)) > 0) {
out.write(buffer.array(), 0, bytesRead);
}
Tất cả điều này nên được thực hiện trên một chuỗi riêng biệt của khóa học để tránh bị rơi ứng dụng và một cơ chế để xử lý khi dừng ghi hoặc kết nối bị mất. Ngoài ra, tôi khá chắc chắn nó sẽ làm việc qua wifi mặc dù tôi không chắc chắn nếu nó sẽ giống nhau với bluetooth (mặc dù hầu hết các thiết bị với BT có wifi bây giờ một ngày và bạn nhận được nhiều băng thông)
Tôi chưa kiểm tra mã này vì vậy tôi không chắc chắn 100% nó sẽ hoạt động.
Điều tiếp theo sẽ có trên máy để chuyển âm thanh vào ứng dụng mong muốn, nhưng đó là trên kinh nghiệm của tôi. Tôi tưởng tượng bạn sẽ phải làm một trình điều khiển ảo hoặc một cái gì đó như thế. Cũng sẽ phải thực hiện cơ chế nghịch đảo cho âm thanh được gửi từ ứng dụng dành cho máy tính để bàn vào điện thoại (tôi khá quan tâm đến phần đó vì sẽ tạo ra tai nghe không dây tốt để xem phim).
Dưới đây là 2 xu của tôi; Tôi háo hức muốn biết nếu nó hoạt động. ;)
Tôi muốn có tính năng tương tự. tôi muốn thực hiện cuộc gọi từ máy tính có âm thanh (VOICE_DOWNLINK) gửi lại cho máy tính như một chiếc điện thoại loa. nhưng giữ micrô ở điện thoại – Mark
Đây không phải là yêu cầu tầm thường; trong bluez ở mức tối thiểu bạn sẽ cần a) thêm vai trò rảnh tay vào bản ghi SDP. b) Xóa cổng âm thanh khỏi bản ghi SDP. c) Thay đổi loại thiết bị của điện thoại để bắt chước tai nghe. Đây chỉ là kết nối qua cấu hình rảnh tay. Theo như gửi âm thanh, vv, đó là một thách thức khác. Tôi không chắc chắn rằng bluedroid thậm chí có hỗ trợ cho điều này, bạn có thể cần một hạt nhân tùy chỉnh. – TwinPrimesAreEz