打开闪光灯java代码_android 拍照带水印(可打开闪光灯功能)

【实例简介】

【实例截图】

c6341c95fb34f49ec4230b4f4e8ee5f3.png

【核心代码】

package com.example.watercamera;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.content.Context;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.PixelFormat;

import android.hardware.Camera;

import android.hardware.Camera.PictureCallback;

import android.os.Bundle;

import android.os.Environment;

import android.support.v4.view.PagerAdapter;

import android.support.v4.view.ViewPager;

import android.support.v4.view.ViewPager.OnPageChangeListener;

import android.view.LayoutInflater;

import android.view.Surface;

import android.view.SurfaceHolder;

import android.view.SurfaceHolder.Callback;

import android.view.SurfaceView;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup;

import android.widget.ImageView;

import com.example.erweimascan.MyApplication;

import com.example.erweimascan.R;

import com.example.watercamera.util.SystemMethod;

public class WaterCameraActivity extends Activity {

private Context mContext;

private ImageView mBack;

private SurfaceView mSurfaceView;

private ImageView mCamera_sd;

private ImageView mTackPic;

private ViewPager mViewPager;

private Camera camera;

private Camera.Parameters parameters = null;

private List views = new ArrayList();

private int waterType = 0;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.waterphoto_camera);

mContext = this;

findView();

init();

}

private void findView() {

mBack = (ImageView) findViewById(R.id.back);

mSurfaceView = (SurfaceView) findViewById(R.id.surfaceView);

mCamera_sd = (ImageView) findViewById(R.id.camera_sd);

mTackPic = (ImageView) findViewById(R.id.tack_pic);

mViewPager = (ViewPager) findViewById(R.id.viewPager);

}

private void init() {

mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

mSurfaceView.getHolder().setFixedSize(176, 144);// surfaceView 分辨率

mSurfaceView.getHolder().setKeepScreenOn(true);

mSurfaceView.getHolder().addCallback(new MySurfaceViewCallback());

mTackPic.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

if (camera != null) {

camera.takePicture(null, null, new MyPictureCallback());

}

}

});

// viewPager

LayoutInflater inflater = LayoutInflater.from(mContext);

views.add(inflater.inflate(R.layout.water_camera_page1, null));

views.add(inflater.inflate(R.layout.water_camera_page2, null));

views.add(inflater.inflate(R.layout.water_camera_page3, null));

views.add(inflater.inflate(R.layout.water_camera_page4, null));

views.add(inflater.inflate(R.layout.water_camera_page5, null));

mViewPager.setAdapter(new MyViewPagerAdapter());

mViewPager.setOnPageChangeListener(new MyOnPagerChangeListener());

}

private class MyPictureCallback implements PictureCallback {

@Override

public void onPictureTaken(byte[] data, Camera camera) {

String photoName = System.currentTimeMillis() ".jpg";

// String

// path=Environment.getExternalStorageDirectory() "/waterphoto/" photoName;

//int result = SystemMethod.saveBitmap(path, data);

((MyApplication)getApplication()).setBitmap(BitmapFactory.decodeByteArray(data, 0, data.length));

Intent intent = new Intent(mContext, WaterPhotoActivity.class);

intent.putExtra("waterType", waterType);

startActivityForResult(intent, 0);

}

}

private class MySurfaceViewCallback implements Callback {

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

parameters = camera.getParameters();// 设置相机参数

parameters.setPictureFormat(PixelFormat.JPEG);

parameters.setPreviewSize(width, height);// 预览大小

parameters.setPreviewFrameRate(5);// 帧

parameters.setPictureSize(width, height);// 保存图片大小

parameters.setJpegQuality(80);// 图片质量

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

try {

camera = Camera.open();

camera.setPreviewDisplay(holder);

camera.setDisplayOrientation(getPreviewDegree(WaterCameraActivity.this));

camera.startPreview();

} catch (IOException e) {

e.printStackTrace();

}

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

if (camera != null) {

camera.release();

camera = null;

}

}

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (camera != null) {

camera.startPreview();

}

}

@Override

protected void onDestroy() {

super.onDestroy();

if (camera != null) {

camera.release();

camera = null;

}

}

public static int getPreviewDegree(Activity activity) {

// 获得手机的方向

int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();

int degree = 0;

// 根据手机的方向计算相机预览画面应该选择的角度

switch (rotation) {

case Surface.ROTATION_0:

degree = 90;

break;

case Surface.ROTATION_90:

degree = 0;

break;

case Surface.ROTATION_180:

degree = 270;

break;

case Surface.ROTATION_270:

degree = 180;

break;

}

return degree;

}

//

// viewPager

private class MyViewPagerAdapter extends PagerAdapter {

@Override

public int getCount() {

return views.size();

}

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

return arg0 == arg1;

}

@Override

public void destroyItem(ViewGroup container, int position, Object object) {

container.removeView(views.get(position));

}

@Override

public Object instantiateItem(ViewGroup container, int position) {

container.addView(views.get(position));

return views.get(position);

}

}

private class MyOnPagerChangeListener implements OnPageChangeListener {

@Override

public void onPageScrollStateChanged(int arg0) {

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

}

@Override

public void onPageSelected(int arg0) {

waterType = arg0;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值