加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

USBcamera 之 xml java

发布时间:2020-12-16 06:32:21 所属栏目:百科 来源:网络整理
导读:wfliao@Precision-M6700:~/workspace/uvc/usbcam/res/layout$ tree . └── activity_main.xml wfliao@Precision-M6700:~/workspace/uvc/usbcam/res/layout$ cat activity_main.xml RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andro
wfliao@Precision-M6700:~/workspace/uvc/usbcam/res/layout$ tree
.
└── activity_main.xml

wfliao@Precision-M6700:~/workspace/uvc/usbcam/res/layout$ cat activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.uvc.usbcam.MainActivity" >




<ImageView
android:id="@+id/mimg"
android:layout_width="600dp"
android:layout_height="600dp"
android:textColor="#ff000000"
android:textSize="100sp" />


<Button
android:id="@+id/mcap"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:layout_marginTop="200dp"
android:text="mcap" />




</RelativeLayout>



wfliao@Precision-M6700:~/workspace/uvc/usbcam/res/values$ cat strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>


<string name="app_name">usbcam</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>


</resources>




wfliao@Precision-M6700:~/workspace/uvc/usbcam/src/com/uvc/usbcam$ tree
.
├── MainActivity.java
└── USBcamera.java


0 directories,2 files


wfliao@Precision-M6700:~/workspace/uvc/usbcam/src/com/uvc/usbcam$ cat USBcamera.java
package com.uvc.usbcam;


import android.graphics.Bitmap;


public class USBcamera {
static public native int open(byte[] devname);
static public native int qbuf(int index);
static public native int streamon();
static public native int streamoff();
static public native int dqbuf(byte[] videodata);
static public native int release();
static public native int init(int width,int height,int numbuf,int ctype);
static public native int pixeltobmp(Bitmap bitmap);
static {
System.loadLibrary("USBcamera");
}
}




wfliao@Precision-M6700:~/workspace/uvc/usbcam/src/com/uvc/usbcam$ cat MainActivity.java
package com.uvc.usbcam;


import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;


import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.ImageFormat;
import android.graphics.Rect;
import android.graphics.YuvImage;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.text.format.Time;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;


public class MainActivity extends Activity {
private ImageView mImag;
private int width = 640;
private int height = 480;
private String devname = "/dev/video0";
private byte[] mdata;
private Handler mHandler;
private int numbuf = 0;
private int index = 0;
private int ret = 0;
private int ctype = 1;//0 is zc301 1 is uvc camera
public Button mcap;
private Bitmap bitmap;
private Bitmap bmp;
private int[] rgb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
mImag = (ImageView)findViewById(R.id.mimg);
mcap = (Button)findViewById(R.id.mcap);
bmp = Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);
numbuf = 4;
mdata = new byte[width * height * numbuf];
rgb = new int[width * height * numbuf];
ret = USBcamera.open(devname.getBytes());
if(ret < 0)
finish();
ret = USBcamera.init(width,numbuf,ctype);
if(ret < 0)
finish();
ret = USBcamera.streamon();
if(ret < 0)
finish();
mHandler = new Handler();
new StartThread().start();
mcap.setOnClickListener(new CaptureListener());
}


final Runnable mUpdateUI = new Runnable() {


@Override
public void run() {
// TODO Auto-generated method stub
mImag.setImageBitmap(bitmap);

}
};

class StartThread extends Thread {


@Override
public void run() {
// TODO Auto-generated method stub
//super.run();
while(true) {
if(ctype == 1){
index = USBcamera.dqbuf(mdata);
if((index < 0) || (mdata == null)) {
onDestroy();
break;
}
USBcamera.pixeltobmp(bmp);
mHandler.post(mUpdateUI);
bitmap = bmp;
USBcamera.qbuf(index);
//USBcamera.yuvtorgb(mdata,rgb);
//mHandler.post(mUpdateUI);
//bitmap = Bitmap.createBitmap(rgb,width,Bitmap.Config.ARGB_8888);
//USBcamera.qbuf(index);
} else {
index = USBcamera.dqbuf(mdata);
if(index < 0) {
onDestroy();
break;
}
mHandler.post(mUpdateUI);
bitmap = BitmapFactory.decodeByteArray(mdata,width * height);
USBcamera.qbuf(index);
}
}
}
}

public static void saveMyBitmap(Bitmap mBitmap) {
Time mtime = new Time();
mtime.setToNow();
File fdir = new File(Environment.getExternalStorageDirectory().getPath() + "/DCIM/" + "/wfliao/");
if(!fdir.exists()) {
fdir.mkdir();
}
File f = new File(Environment.getExternalStorageDirectory().getPath() + "/DCIM/" + "/wfliao/" + mtime.year + mtime.month + mtime.monthDay + mtime.hour + mtime.minute +mtime.second+".png");
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
FileOutputStream fOut = null;
try {
fOut = new FileOutputStream(f);
mBitmap.compress(Bitmap.CompressFormat.PNG,100,fOut);
fOut.flush();
fOut.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}


}

class CaptureListener implements OnClickListener{


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//new CapThread().start();
//USBcamera.streamoff();
saveMyBitmap(bitmap);
//USBcamera.streamon();
Toast.makeText(MainActivity.this,"Capture Successfully",Toast.LENGTH_SHORT).show();
}
}
/*
class CapThread extends Thread {


@Override
public void run() {
// TODO Auto-generated method stub
//super.run();
saveMyBitmap(bitmap);
Toast.makeText(MainActivity.this,Toast.LENGTH_LONG).show();
}

}
*/
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
USBcamera.release();
finish();
System.exit(0);
}


@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
USBcamera.release();
finish();
System.exit(0);
}


@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
USBcamera.release();
System.exit(0);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main,menu);
finish();
return true;
}


}


一般生成在mnt/sdcard/DCIM/camera/wfliao

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读