android localsocket 权限,android借助LocalSocket获取H264的几个疑点解惑(二)?

o.SCREEN_ORIENTATION_LANDSCAPE);

setContentView(R.layout.prew);

cameraSufView = (SurfaceView)this.findViewById(R.id.surfaceview);

SurfaceHolder holder = cameraSufView.getHolder();

holder.addCallback(this);

holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

}

LocalSocket receiver,sender;

LocalServerSocket lss;

private void initLocalSocket(){

receiver = new LocalSocket();

try {

//address already in use

lss = new LocalServerSocket("mytest1");

receiver.connect(new LocalSocketAddress("mytest1"));

receiver.setReceiveBufferSize(500000);

receiver.setSendBufferSize(500000);

sender = lss.accept();

sender.setReceiveBufferSize(500000);

sender.setSendBufferSize(500000);

} catch (IOException e1) {

e1.printStackTrace();

Log.e("", "localSocket error:"+e1.getMessage());

}

}

protected void onResume() {

super.onResume();

}

protected void onStart() {

super.onStart();

}

private MediaRecorder mMediaRecorder ;

private Camera mCamera;

private FileOutputStream mOutput;

private void initializeVideo(){

if(mSurfaceHolder==null){

return ;

}

mMediaRecorderRecording = true;

if(mMediaRecorder==null)

mMediaRecorder = new MediaRecorder ();

else

mMediaRecorder.reset();

// if(mCamera!=null)

// {

// mCamera.release();

// mCamera = null;

// }

if(mOutput!=null)

{

try {

mOutput.close();

mOutput = null;

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

try {

mOutput = new FileOutputStream ("/sdcard/newdata.dat");

} catch (FileNotFoundException e2) {

// TODO Auto-generated catch block

e2.printStackTrace();

}

// mCamera = Camera.open();

// Camera.Parameters parameters = mCamera.getParameters();

// parameters.setPreviewSize(176, 144);

// parameters.setPreviewFormat(PixelFormat.YCbCr_420_SP);

// mCamera.setParameters(parameters);

//

// mMediaRecorder.setCamera(mCamera);

mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

//文件句柄的方式

mMediaRecorder.setOutputFile(sender.getFileDescriptor());

// SDCard存储的方式

// try {

// mMediaRecorder.setOutputFile("/sdcard/langtao_264.data");

// } catch (IllegalStateException e1) {

// // TODO Auto-generated catch block

// e1.printStackTrace();

// }

mMediaRecorder.setVideoFrameRate(20);

mMediaRecorder.setVideoSize(176,144);

mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());

try {

mMediaRecorder.prepare();

mMediaRecorder.start();

new Thread (this).start();

} catch (IllegalStateException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

releaseMediaRecorder();

finish();

}

}

private void releaseMediaRecorder() {

Log.v("", "Releasing media recorder.");

if (mMediaRecorder != null) {

mMediaRecorder.reset();

if (mCamera != null) {

mCamera.release();

mCamera = null;

}

mMediaRecorder.release();

mMediaRecorder = null;

}

}

private boolean mMediaRecorderRecording = false;

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

initLocalSocket();

if(!mMediaRecorderRecording) initializeVideo();

}

private SurfaceHolder mSurfaceHolder ;

public void surfaceCreated(SurfaceHolder holder) {

mSurfaceHolder = holder ;

}

public void surfaceDestroyed(SurfaceHolder holder) {

mSurfaceHolder = null;

mMediaRecorderRecording = false;

releaseMediaRecorder();

}

public void run() {

int read = 0;

InputStream mInput=null;

try {

mInput = receiver.getInputStream();

} catch (IOException e1) {

e1.printStackTrace();

}

byte[] temp = new byte[10*1024];

while(read !=-1)

{

try {

read = mInput.read(temp);

Log.e("", "read:"+read);

mOutput.write(temp, 0, read);

} catch (IOException e) {

e.printStackTrace();

}

}

try {

mOutput.close();

} catch (IOException e) {

e.printStackTrace();

}

if(sender!=null)

{

try {

sender.close();

receiver.close();

lss.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

protected void onDestroy() {

super.onDestroy();

}

}

源码下载:

28701265_1.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值