package cn.sun.picture;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.AssetFileDescriptor;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.PixelFormat;
import android.graphics.drawable.BitmapDrawable;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.ToneGenerator;
import android.os.Bundle;
import android.os.Environment;
import android.os.Vibrator;
import android.provider.ContactsContract.CommonDataKinds.Im;
import android.util.Log;
import android.view.Display;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
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.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.Toast;
/**
* 照相机
*/
public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
private SurfaceView surfaceView;
private Camera camera;
private ImageButton startCaemraBtn;
private ImageButton flashModeBtn;
// Popwindow显示
private PopupWindow tipPopupWindow;
private RelativeLayout layout;
private ListView listView;
private String title[] = { "自动", "开启", "关闭" };
private AudioManager mAudioManager;
private int ringMode;
public static Bitmap prviewImageBitMap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window window = getWindow();
requestWindowFeature(Window.FEATURE_NO_TITLE);
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.main);
initView();
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
setRingMode(mAudioManager.getRingerMode());
Toast.makeText(MainActivity.this, "进入无声拍照模式!", Toast.LENGTH_SHORT)
.show();
}
// 初始化界面的UI
private void initView() {
startCaemraBtn = (ImageButton) findViewById(R.id.startCameraBtn);
flashModeBtn = (ImageButton) findViewById(R.id.flashModeBtn);
startCaemraBtn.setOnClickListener(new startCameraOnClick());
flashModeBtn.setOnClickListener(new flashModeCameraOnClick());
SharedPreferences sharedPreferences = getSharedPreferences(
"issetValueXml", Context.MODE_PRIVATE);
int i = sharedPreferences.getInt("onoff", 0);
if (i == 0) {
flashModeBtn.setBackgroundResource(R.drawable.flashmode_auto);
} else if (i == 1) {
flashModeBtn.setBackgroundResource(R.drawable.flashmode_open);
} else if (i == 2) {
flashModeBtn.setBackgroundResource(R.drawable.flashmode_off);
}
surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
surfaceView.getHolder().setFixedSize(surfaceView.getWidth(),
surfaceView.getHeight());
// 设置SurfaceHolder对象的类型
surfaceView.getHolder()
.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
// 指定用于捕捉拍照事件的SurfaceHolder.Callback对象
surfaceView.getHolder().addCallback(new SurfaceCallback());
}
// 回调接口
private final class SurfaceCallback implements SurfaceHolder.Callback {
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
camera = Camera.open();
camera.setDisplayOrientation(90);
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Camera.Parameters parameters = camera.getParameters();
// 根据屏幕方向设置预览尺寸
parameters.setPreviewSize(display.getWidth(), display.getHeight());
// 下面的参数有可能导致某些手机花屏(后续解决)
parameters.setPreviewFrameRate(3);
// 设置照片格式
parameters.setPictureFormat(PixelFormat.JPEG);
parameters.set("jpeg-quality", 85);
// 设置拍摄照片的实际分辨率,本例中的分辨率是1024×768
parameters.setPictureSize(display.getWidth() / 2,
display.getHeight() / 2);
/*
* if
* (MainActivity.this.getResources().getConfiguration().orientation
* != Configuration.ORIENTATION_LANDSCAPE) { // 如果是竖屏
* parameters.set("orientation", "portrait");
* camera.setDisplayOrientation(90); } else {
* parameters.set("orientation", "landscape");
* camera.setDisplayOrientation(0); }
*/
// 设置保存的图像大小
camera.setParameters(parameters);
try {
// 设置用于显示拍照影像的SurfaceHolder对象
camera.setPreviewDisplay(surfaceView.getHolder());
camera.startPreview();
} catch (IOException e) {
Log.e(TAG, e.toString());
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (camera != null) {
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release();
camera = null;
}
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
}
// 回调接口
private final class TakePictureCallback implements PictureCallback {
// 该方法用于处理拍摄后的照片数据
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Log.v("--------", "执行");
mAudioManager.setRingerMode(getRingMode());
// data参数值就是照片数据,将这些数据以key-value形式保存,以便其他调用该Activity的程序可以获得照片数据
try {
Matrix matrix = new Matrix();
matrix.reset();
matrix.setRotate(90);
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,
data.length);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
bitmap.getHeight(), matrix, true);
setPrviewImageBitMap(bitmap);//为预览提供一个BitMap(转换)
Intent intent = new Intent(MainActivity.this,
PreviewImageView.class);
startActivity(intent);
// 停止照片拍摄
camera.stopPreview();
} catch (Exception e) {
Log.e(TAG, e.toString());
}
}
}
// 无声处理
ShutterCallback sc = new ShutterCallback() {
@Override
public void onShutter() {
Vibrator vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
vibrator.vibrate(100);
}
};
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
// 结束拍照
camera.autoFocus(new AutoFocusCallback() {
@Override
public void onAutoFocus(boolean success, Camera camera) {
// success为true表示对焦成功
if (success) {
SharedPreferences sharedPreferences = getSharedPreferences(
"issetValueXml", Context.MODE_PRIVATE);
int i = sharedPreferences.getInt("onoff", 2);
if (i == 0) {
Camera.Parameters parameters = camera
.getParameters();
parameters
.setFlashMode(Camera.Parameters.FOCUS_MODE_AUTO);
camera.setParameters(parameters);
} else if (i == 1) {
Camera.Parameters parameters = camera
.getParameters();
parameters
.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
camera.setParameters(parameters);
没有合适的资源?快使用搜索试试~ 我知道了~
小程序源码 基于2.2照相机Demo,可以直接放到项目里使用.rar
共65个文件
png:24个
class:17个
xml:9个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 166 浏览量
2023-03-15
18:53:40
上传
评论
收藏 280KB RAR 举报
温馨提示
小程序源码 基于2.2照相机Demo,可以直接放到项目里使用.rar
资源推荐
资源详情
资源评论
收起资源包目录
小程序源码 基于2.2照相机Demo,可以直接放到项目里使用.rar (65个子文件)
CaemraDemos
project.properties 562B
.classpath 380B
.settings
org.eclipse.jdt.core.prefs 177B
org.eclipse.core.resources.prefs 57B
assets
src
cn
sun
picture
PreviewImageView.java 1KB
MainActivity.java 11KB
res
drawable-mdpi
icon.png 3KB
drawable-xhdpi
drawable-ldpi
icon.png 2KB
values
strings.xml 169B
layout
bubble_dialog.xml 733B
preview_image.xml 922B
main.xml 1KB
bubble_text.xml 502B
drawable
image_btn_press.xml 312B
ss.mp3 12KB
image_subbtn_press.xml 318B
drawable-hdpi
camera_start.png 12KB
camera_prass.png 13KB
submit_image_press.png 1KB
flashmode_auto.png 3KB
camera_switch_normal.png 3KB
flashmode_open.png 3KB
flashmode_off.png 2KB
camera_switch_pressed.png 1KB
submit_image.png 1KB
icon.png 4KB
bin
classes
cn
sun
picture
MainActivity$1.class 868B
MainActivity$TakePictureCallback.class 2KB
R$string.class 415B
R$layout.class 491B
PreviewImageView$subMitCameraOnClick.class 758B
MainActivity$startCameraOnClick.class 2KB
PreviewImageView.class 1KB
R$id.class 619B
BuildConfig.class 337B
R$attr.class 328B
MainActivity$flashModeCameraOnClick.class 779B
MainActivity$3.class 2KB
R$drawable.class 847B
MainActivity.class 7KB
MainActivity$2.class 2KB
R.class 503B
MainActivity$SurfaceCallback.class 3KB
CaemraDemos.apk 79KB
resources.ap_ 69KB
res
crunch
drawable-mdpi
icon.png 2KB
drawable-ldpi
icon.png 2KB
drawable-hdpi
camera_start.png 12KB
camera_prass.png 13KB
submit_image_press.png 1KB
flashmode_auto.png 3KB
camera_switch_normal.png 3KB
flashmode_open.png 3KB
flashmode_off.png 2KB
camera_switch_pressed.png 1KB
submit_image.png 1KB
icon.png 4KB
classes.dex 14KB
dexedLibs
annotations-9b8748c2df4ef1fdc806cadcfb06edb0.jar 943B
AndroidManifest.xml 2KB
.project 847B
AndroidManifest.xml 2KB
gen
cn
sun
picture
BuildConfig.java 156B
R.java 2KB
raw
ss.mp3 12KB
共 65 条
- 1
资源评论
金枝玉叶9
- 粉丝: 137
- 资源: 7640
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功