編輯:關於Android編程
一、布局文件main.xml
二、MainActivity.java
import java.io.File;
import java.io.FileOutputStream;
import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.os.Bundle;
import android.os.Environment;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
public class MainActivity extends Activity {
private View layout;
private Camera camera;
@Override
public 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.main);
layout = this.findViewById(R.id.buttonlayout);
SurfaceView surfaceView = (SurfaceView) this
.findViewById(R.id.surfaceView);
surfaceView.getHolder()
.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceView.getHolder().setFixedSize(176, 144);
surfaceView.getHolder().setKeepScreenOn(true);
surfaceView.getHolder().addCallback(new SurfaceCallback());
}
public void takepicture(View v) {
if (camera != null) {
switch (v.getId()) {
case R.id.takepicture:
camera.takePicture(null, null, new MyPictureCallback());
break;
case R.id.autofocus:
camera.autoFocus(null);
break;
}
}
}
private final class MyPictureCallback implements PictureCallback {
public void onPictureTaken(byte[] data, Camera camera) {
try {
File jpgFile = new File(
Environment.getExternalStorageDirectory(),
System.currentTimeMillis() + .jpg);
FileOutputStream outStream = new FileOutputStream(jpgFile);
outStream.write(data);
outStream.close();
camera.startPreview();
} catch (Exception e) {
e.printStackTrace();
}
}
}
private final class SurfaceCallback implements Callback {
public void surfaceCreated(SurfaceHolder holder) {
try {
camera = Camera.open();// 打開攝像頭
Camera.Parameters parameters = camera.getParameters();
// Log.i(MainActivity, parameters.flatten());
parameters.setPreviewSize(800, 480);
parameters.setPreviewFrameRate(5);
parameters.setPictureSize(1024, 768);
parameters.setJpegQuality(80);
camera.setParameters(parameters);
camera.setPreviewDisplay(holder);
camera.startPreview();// 開始預覽
} catch (Exception e) {
e.printStackTrace();
}
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
public void surfaceDestroyed(SurfaceHolder holder) {
if (camera != null) {
camera.release();
camera = null;
}
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
layout.setVisibility(ViewGroup.VISIBLE);
return true;
}
return super.onTouchEvent(event);
}
}
三、添加權限
效果如下:
Android自帶的Email從6.3開始不支持exchange了,用了那麼久,突然不支持了還真是不習慣。市場上也沒有比較好的替代軟件,心想從網上搜一下能不
看一段簡單的代碼,在一個pager裡面顯示兩個TextView List items = new ArrayList();adapter = new MyPag
一、概述隨著Android L版本的發布,RecyclerView已經逐漸地取代了ListView,用來顯示較多的數據集,RecyclerView相比ListView在性
第一次做這樣的設備,原來如此簡單,記錄一下。 用公告程序替代launcher 其實小米盒子,樂視盒子等類似設備都是這樣做的。 一:顯示器嵌入系統。 買一個主