我按照视频里面写的,没问题啊。为什么摄像头还是打不开呢,
并且触摸屏幕应该会显示2个按钮,也不显示。检测他的显示是0啊,难道被盖住了?
教程就这么布局的没问题呢,下面是项目
http://pan.baidu.com/share/link?shareid=303524&uk=2233679321
并且触摸屏幕应该会显示2个按钮,也不显示。检测他的显示是0啊,难道被盖住了?
教程就这么布局的没问题呢,下面是项目
http://pan.baidu.com/share/link?shareid=303524&uk=2233679321
解决方案 »
- systemutil在android里是什么用的。
- Android单独编译某一个模块
- 当真机和模拟器一起调试程序时,为什么真机有日志信息输出,而模拟器的日志信息却没有输出
- 求助:Android中怎样截获系统触屏或按键输入事件?
- 请问下源码里的PreferenceScreen字体大小
- android socket构建TCP客户端实现自由收发!
- Android中AudioRecord的startRecording问题
- Android 小闹钟项目 添加一次闹钟,出现两个闹钟
- Android studio前几天还能运行,后来在C盘里移除了个东西,然后再打开就如下图所示了
- Android开发工具Eclipse的暗转问题
- 我想修改一个APK,希望他不出现在最近程序列表里面 请大侠帮忙!!!谢啦
- 蓝牙连接问题
/**
* 该版本完成了 连拍功能,并且完善了照片的处理信息,通过修改exif信息修正照片方向
*
*
*/
import java.io.IOException;import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.Parameters;
import android.hardware.Camera.PreviewCallback;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.Toast;public class MyCamera20130206Activity extends Activity implements SurfaceHolder.Callback,OnClickListener{
/** Called when the activity is first created. */
private static final String TAG = "Camera";
private FrameLayout mFrameLayout;
private SurfaceView mSurfaceView;
private SurfaceHolder mSurfaceHolder;
private Camera mCamera;
private CameraInfo[] mCameraInfo;
private int mNumberOfCamera;
private int mBackCameraId = -1,mFrontCameraId = -1;
private Parameters mParameters;
private int mCameraStatus;
private final static int STOP_PREVIEW = 0;
private final static int START_PREVIEW = 1;
private Context mContext;
//for test
public Button takePictureButton;
String fileName = null;
public Button autofocusButton;
public int pictureOrientation = 0;
public Button settingsButton;
private ContentResolver mContentResolver;
//for test
//if too much work to do in CameraStartUp can do it in this thread
private class CameraStartUpThread extends Thread{
public void run(){
//mCamera = Camera.open(mBackCameraId);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.v("TAG","onCreate");
mContext = this;
//initFullScreen(mContext);
getContentResoler(mContext);
initView();
initCamera();
initSurfaceHolder();
} @Override
protected void onResume() {
// TODO Auto-generated method stub
Log.v("TAG","onresume");
super.onResume();
}
@Override
protected void onPause() {
Log.v("TAG","onpause");
stopPreview();
releaseCamera();
super.onPause();
} @Override
protected void onStop() {
Log.v("TAG","stop");
// TODO Auto-generated method stub
super.onStop();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
} public void initView(){
Log.v("TAG","initView");
mFrameLayout = (FrameLayout)findViewById(R.id.cameraframe);
mSurfaceView = (SurfaceView)findViewById(R.id.camera_screen);
// for test
takePictureButton = (Button)findViewById(R.id.takepicture);
takePictureButton.setOnClickListener(this);
autofocusButton = (Button)findViewById(R.id.autofocus);
autofocusButton.setOnClickListener(this);
settingsButton = (Button)findViewById(R.id.settings);
settingsButton.setOnClickListener(this);
// for test
}
public void initCamera(){
Log.v("TAG","initCamera");
setCameraInfo();
setCameraId();
}
public void initSurfaceHolder(){
Log.v("TAG","initSurafaceHolder");
mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mSurfaceHolder.setKeepScreenOn(true);
mSurfaceHolder.addCallback(this);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
openCamera();
prepareCamera();
setDisplayOrientation(mContext);
setParameters();
startPreview();
mParameters = mCamera.getParameters();
Log.v("TAG",""+mParameters.flatten());
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
stopPreview();
releaseCamera();
}
private void setCameraInfo() {
Log.v("TAG","setCameraInfo");
mNumberOfCamera = Camera.getNumberOfCameras();
Log.v("TAG",""+mNumberOfCamera);
if(mNumberOfCamera == 0){
Toast.makeText(getApplicationContext(), "not camera ", 0).show();
//finish();
}
mCameraInfo = new CameraInfo[mNumberOfCamera];
for(int i=0;i<mNumberOfCamera;i++){
mCameraInfo[i] = new CameraInfo();
Camera.getCameraInfo(i, mCameraInfo[i]);
}
}
private void setCameraId() {
Log.v("TAG","setCameraId");
for(int i=0;i<mNumberOfCamera;i++){
if(mBackCameraId == -1 && mCameraInfo[i].facing == CameraInfo.CAMERA_FACING_BACK){
mBackCameraId = i;
}else if(mFrontCameraId == -1 && mCameraInfo[i].facing == CameraInfo.CAMERA_FACING_FRONT){
mFrontCameraId = i;
}
}
}
//open back camera as default
private void openCamera(){
try{
// mCamera = Camera.open(mBackCameraId);
mCamera = Camera.open(0);
}catch (Exception e){
}
}
private void prepareCamera(){
try {
mCamera.setPreviewDisplay(mSurfaceHolder);
} catch (IOException e) {
e.printStackTrace();
}
}
private void startPreview(){
mCamera.startPreview();
}
private void stopPreview(){
if(mCameraStatus == START_PREVIEW)
mCamera.stopPreview();
}
private void releaseCamera(){
if(mCamera != null){
mCamera.release();
mCamera = null;
}
}
private void setDisplayOrientation(Context context){
int rotation = ((Activity) context).getWindowManager()
.getDefaultDisplay().getRotation();
int degree = 0;
switch (rotation) {
case Surface.ROTATION_0: degree = 0; break;
case Surface.ROTATION_90: degree = 90; break;
case Surface.ROTATION_180: degree = 180; break;
case Surface.ROTATION_270: degree = 270; break;
}
int result;
CameraInfo info = new CameraInfo();
//Camera.getCameraInfo(mBackCameraId, info);
Camera.getCameraInfo(0, info);
if(info.facing == CameraInfo.CAMERA_FACING_FRONT){
result = (info.orientation + degree) % 360;
result = (360 - result) % 360;
}else{
result =(info.orientation - degree + 360 ) % 360;
}
mCamera.setDisplayOrientation(result);
Log.v("TAG","result:"+result);
pictureOrientation = result;
}
private void setParameters(){
mParameters = mCamera.getParameters();
// mParameters.setPictureSize(1280, 768);
// mParameters.setPreviewSize(1280, 720);
Log.v("TAG","max:"+mParameters.getMaxZoom());
mCamera.setParameters(mParameters);
} @Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.takepicture:
//mCamera.takePicture(null, null, null,new JpegPictureCallback());
//Toast.makeText(getApplicationContext(), "before take", 0).show();
//mCamera.setPreviewCallbackWithBuffer(new JpegPreviewCallback());
mCamera.setPreviewCallback(new JpegPreviewCallback());
break; case R.id.autofocus:
mCamera.autoFocus(null);
break;
case R.id.settings:
Intent settingsIntent = new Intent(mContext, MyCameraSettings20130207Activity.class);
startActivity(settingsIntent);
stopPreview();
releaseCamera();
break;
}
}
class JpegPictureCallback implements Camera.PictureCallback{
@Override
public void onPictureTaken(byte[] data, Camera camera) {
try {
camera.stopPreview();
camera.startPreview();
} catch (Exception e) {
// TODO: handle exception
}
}
}
class JpegPreviewCallback implements PreviewCallback {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
//Toast.makeText(getApplicationContext(), "take", 0).show();
final byte[] yuvdata = data;
Thread save = new Thread(new Runnable() {
@Override
public void run() {
Log.v("TAG","save jpeg size"+yuvdata.length);
fileName = System.currentTimeMillis() + ".jpeg";
boolean mIsSave = Storage.savePicture(yuvdata, fileName,
mCamera.getParameters().getPreviewSize(),
pictureOrientation,mContentResolver,mContext);
if(!mIsSave){
Log.v("TAG","save fail");
}
}
});
save.start();
mCamera.setPreviewCallback(null);
}
} //for storage
private void getContentResoler(Context context){
mContentResolver = context.getContentResolver();
}
//for storage
}
这个可以跑起来 你对比一下吧