2011-12-20 19 views
7

Tôi muốn hiểu cách hoạt động của ổ cắm, đặc biệt là tôi cần một số mẫu mã cho phía máy chủ để nhận luồng được gửi bởi mediarecorder từ thiết bị.âm thanh luồng Android tới máy chủ

Cảm ơn bạn rất nhiều vì đã giúp đỡ.

Mục đích cuối cùng của tôi là nói chuyện trong thiết bị và nghe trên PC, chỉ một hướng.

Hiện nay tôi có thể gửi các dòng sử dụng đoạn mã sau:

String hostname = "192.168.1.10"; 
int port = 8000; 
Socket socket = null; 
    try { 
     socket = new Socket(InetAddress.getByName(hostname), port); 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket); 

recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
recorder.setOutputFile(pfd.getFileDescriptor()); 

    try { 
     recorder.prepare(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

recorder.start(); 
+0

Ngôn ngữ nào bạn đang sử dụng trên PC? – Axis

+0

Tôi sử dụng .NET platform, vb.net hoặc C# giống nhau. – Giuseppe

Trả lời

4

vẻ ok, nhưng cá nhân tôi muốn để đệm âm thanh trên thiết bị và gửi nó đến máy chủ từ khác chỉ thay vì buộc đầu ghi vào ổ cắm trực tiếp như bạn đã làm. Vì bộ đệm cục bộ sẽ cho phép bạn xử lý ngắt kết nối một cách duyên dáng.

Hãy tưởng tượng bạn đang ghi và người dùng đi qua một đường hầm và mất kết nối internet - nếu bạn đang phát trực tiếp, ổ cắm sẽ đóng và người dùng sẽ khó chịu :-) Tuy nhiên, nếu bạn đang đệm dữ liệu cục bộ , bạn có thể thiết lập lại kết nối và tiếp tục gửi âm thanh đến máy chủ từ nơi bạn đã dừng lại và hy vọng người dùng thậm chí không biết rằng ngắt kết nối vừa xảy ra, vì nó chỉ hoạt động một cách kỳ diệu.

Để làm việc đó, bạn phải ghi bản ghi vào bộ đệm cục bộ và có một chuỗi riêng biệt kiểm tra dữ liệu mới trên bộ đệm đó và gửi đến máy chủ càng sớm càng tốt.

+2

một số điểm ví dụ? – Giuseppe