代码整理——wifi语音

来源:互联网 发布:远程网络 国外硕士 编辑:程序博客网 时间:2024/04/30 02:07
package com.lovejia.WifiVoip;import java.io.IOException;import java.net.InetAddress;import java.net.MulticastSocket;import android.app.Activity;import android.content.Context;import android.net.wifi.WifiManager;import android.net.wifi.WifiManager.MulticastLock;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {MulticastLock multicastLock;  private Button btnStart = null;private Button btnClose = null;int port = 9876;InetAddress group = null;MulticastSocket ms = null;AudioReader ar;AudioWriter aw;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btnStart = (Button) findViewById(R.id.btnStart);btnClose = (Button) findViewById(R.id.btnClose);btnStart.setOnClickListener(startClickListener);btnClose.setOnClickListener(closeClickListener);EnableWifiMulticast();}private void EnableWifiMulticast(){WifiManager wifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE);           multicastLock=wifiManager.createMulticastLock("multicast.test");           multicastLock.acquire();}private void ReleaseWifiMulticast(){        multicastLock.release();}private OnClickListener startClickListener = new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubJoinCreateMuticast();ar = new AudioReader(group,port,ms);ar.run();aw = new AudioWriter(group,port,ms);aw.run();}private void JoinCreateMuticast() {// TODO Auto-generated method stubtry {ms = new MulticastSocket(port);ms.setLoopbackMode(true); //group = InetAddress.getByName("224.5.0.7");group = InetAddress.getByName("224.0.0.1");ms.joinGroup(group);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();ReleaseWifiMulticast();}}};private OnClickListener closeClickListener = new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubtry {ms.leaveGroup(group);ReleaseWifiMulticast();System.exit(0);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}};@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}


package com.lovejia.WifiVoip;import java.io.IOException;import java.net.DatagramPacket;import java.net.InetAddress;import java.net.MulticastSocket;import android.media.AudioFormat;import android.media.AudioRecord;import android.media.MediaRecorder;public class AudioWriter extends Thread{private int port = 0;private InetAddress group = null;private MulticastSocket ms = null;private int bufferSize = 0;byte[] buffer;AudioRecord ar;public AudioWriter(InetAddress group,int port,MulticastSocket ms) {// TODO Auto-generated constructor stubthis.group = group;this.port = port;this.ms = ms;initRecord();}private void initRecord(){int frequency = 11025;int channelConfiguration = AudioFormat.CHANNEL_IN_DEFAULT;int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;bufferSize = AudioRecord.getMinBufferSize(frequency, channelConfiguration,  audioEncoding);ar = new AudioRecord(MediaRecorder.AudioSource.MIC,frequency, channelConfiguration,audioEncoding, bufferSize);buffer = new byte[bufferSize]; }private byte[] startRecord(){    ar.startRecording();    ar.read(buffer, 0, bufferSize);return buffer;}@Overridepublic void run() {// TODO Auto-generated method stubwhile(true){byte[] date = startRecord(); DatagramPacket dp = new DatagramPacket(date, date.length,group,port);try {ms.send(dp);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

package com.lovejia.WifiVoip;import java.io.IOException;import java.net.DatagramPacket;import java.net.InetAddress;import java.net.MulticastSocket;import android.media.AudioFormat;import android.media.AudioManager;import android.media.AudioTrack;public class AudioReader extends Thread{private int port = 0;private InetAddress group = null;private MulticastSocket ms = null;public AudioReader(InetAddress group,int port,MulticastSocket ms) {// TODO Auto-generated constructor stubthis.port = port;this.group = group;this.ms = ms;}public void run() {byte[] buffer = new byte[8192];while(true){DatagramPacket dp = new DatagramPacket(buffer, buffer.length);try {ms.receive(dp);AudioTrack at = new AudioTrack(AudioManager.STREAM_MUSIC,11025,AudioFormat.CHANNEL_OUT_MONO,AudioFormat.ENCODING_PCM_16BIT,buffer.length,AudioTrack.MODE_STREAM);at.play();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}String s = new String(dp.getData());//System.out.println(s);}}}


0 0
原创粉丝点击