android有程序占用相机,Android相机 - 有时当我拍照时,应用程序冻结,相机不可用...
我已经构建了一个应用程序,可以在您触摸预览时拍摄照片。 我可以拍很多照片,但有时当我触摸预览拍照时,没有快门声,整个应用程序冻结。此外,在此之后,如果我尝试启动内置相机应用程序,我会收到相机无法使用的消息。Android相机 - 有时当我拍照时,应用程序冻结,相机不可用
我不知道这种行为的原因,它随机发生,当它发生时,我必须重新启动设备(三星Galaxy S)才能够再次使用相机。
在DDM,碰撞后,可看到下面的行:keyDispatchingTimedOut
下面是相关的代码: CameraActivity类别:
public class CameraActivity extends Activity {
private static final String TAG = "CameraDemo";
Preview preview;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
preview = new Preview(this);
((FrameLayout) findViewById(R.id.preview)).addView(preview);
((FrameLayout) findViewById(R.id.preview)).setOnTouchListener(preview);
Log.d(TAG, "Camera Activity Created.");
}
}
预览类别:
class Preview extends SurfaceView implements SurfaceHolder.Callback, OnTouchListener {
private static final String TAG = "Preview";
SurfaceHolder mHolder;
public Camera camera;
Context ctx;
boolean previewing = false;
Preview(Context context) {
super(context);
ctx = context;
// Install a SurfaceHolder.Callback so we get notified when the
// underlying surface is created and destroyed.
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
// Called once the holder is ready
public void surfaceCreated(SurfaceHolder holder) {
// The Surface has been created, acquire the camera and tell it where
// to draw.
camera = Camera.open();
}
// Called when the holder is destroyed
public void surfaceDestroyed(SurfaceHolder holder) {
if (camera != null) {
camera.setPreviewCallback(null);
camera.stopPreview();
camera.release();
camera = null;
}
previewing = false;
}
// Called when holder has changed
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
if(previewing){
camera.stopPreview();
previewing = false;
}
if (camera != null){
try {
camera.setDisplayOrientation(90);
camera.setPreviewDisplay(holder);
camera.setPreviewCallback(new PreviewCallback() {
// Called for each frame previewed
public void onPreviewFrame(byte[] data, Camera camera) {
Log.d(TAG, "onPreviewFrame called at: " + System.currentTimeMillis());
Preview.this.invalidate();
}
});
camera.startPreview();
previewing = true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public boolean onTouch(View v, MotionEvent event) {
camera.takePicture(shutterCallback, rawCallback, jpegCallback);
return false;
}
// Called when shutter is opened
ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
Log.d(TAG, "onShutter'd");
}
};
// Handles data for raw picture
PictureCallback rawCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
Log.d(TAG, "onPictureTaken - raw");
}
};
// Handles data for jpeg picture
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
FileOutputStream outStream = null;
try {
// Write to SD Card
outStream = new FileOutputStream(String.format("/sdcard/TVguide/Detection/detected.jpg", System.currentTimeMillis())); // <9>
outStream.write(data);
outStream.close();
Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length);
} catch (FileNotFoundException e) { // <10>
//Toast.makeText(ctx, "Exception #2", Toast.LENGTH_LONG).show();
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {}
Log.d(TAG, "onPictureTaken - jpeg");
Toast.makeText(ctx, "SAVED", Toast.LENGTH_SHORT).show();
camera.startPreview();
}
};
}
请帮忙,我想了解几天没有成功的问题
的Eyal
2012-03-12
Eyal
+0
有人吗?我真的坚持 –
2012-03-14 20:52:10
+0
也我建议将图片保存到SD卡后台线程,而不是主要的UI线程。 –
2013-05-14 17:08:09
android有程序占用相机,Android相机 - 有时当我拍照时,应用程序冻结,相机不可用...相关推荐
- CMD 命令行查看端口被哪个程序占用,并根据PID值,找到相应的程序,关闭掉对应服务或进程!...
CMD 命令行查看端口被哪个程序占用,并根据PID值,找到相应的程序,关闭掉对应服务或进程! 不用任何第三方软件的情况下,打开CMD执行如下命令:1,netstat -ano 你可以查看到Local ...
- 那些年,我们在Android机型适配上遇到的坑丨之Camera拍照时快门咔嚓声
文/腾讯优测研发工程师 吴宇焕 现在Android手机一般都会带有照相功能,有很多朋友就发现手机照相时快门声音很响,想关又关不掉.....不过话说回来,静音拍照你想做啥? 来到主题上,因为网络上有很多 ...
- android8.1 相机(SnapdragonCamera)长按拍照时关闭闪光灯
我们公司用的是高通sdm660平台,oppo等大厂长按相机拍照时,即使闪光灯打开也不会亮,从SnapdragonCamera里面通过设置parameters = camera.getParameter ...
- php微信照相机,用微信拍照时怎么打开原生相机?(Android)| 有轻功
在日常的微信聊天中,我们经常会给朋友分享即兴拍摄的照片.出于方便,很多时候我们会直接用微信来拍照,但用微信自带的相机拍出来的照片,效果其实并不理想. 上为手机原生相机拍摄,下为微信相机拍摄 特别是在光 ...
- Java占Linux超过xms,linux下分析java程序占用CPU、内存过高
一.CPU过高分析 1)使用TOP命令查看CPU.内存使用状态可以发现CPU占用主要分为两部分,一部分为系统内核空间占用CPU百分比,一部分为用户空间占用CPU百分比.其中CPU状态中标示id的为空闲 ...
- linux进程莫名其妙被kill,Linux运行程序时,程序进程莫名退出(被杀死)
Linux运行程序时,程序进程莫名退出(被杀死) 1.知识点 1)Linux程序进程被杀,日志突然中止,可以考虑是否因为程序占用内存过高,导致系统内存不足,为避免系统崩溃,系统寻找内存占用最大的进程k ...
- android相机采集sdk,C#用basler相机sdk采集图像并用halcon显示的小程序
C#用basler相机sdk采集图像并用halcon显示的小程序 C#用basler相机sdk采集图像并用halcon显示的小程序 本人在用halcon做图像处理做视觉项目时,通常都是用c#写程序的主 ...
- android系统相机的使用、及解决拍照闪退的问题
http://blog.csdn.net/lang791534167/article/details/39647263 相机已成为Android手机不可或缺的一部分,我们在开发可能也会涉及到关于相机的 ...
- Android通知怎么实现?Android开发如何操作相机和相册?
Android通知怎么实现?Android开发如何操作相机和相册? 前言 八.Android通知怎么实现?Android开发如何操作相机和相册? 8.1 通知介绍 8.2 通知的基本用法 8.3 An ...
最新文章
- python进程执行带有参数的任务(args、kwargs)
- Upgrading PHP on CentOS 6.5 (Final)
- 共谋大数据产业发展新篇章
- rose 2003 7.0_安卓微信7.0.17正式版更新:十大新鲜功能~
- Redhat7.2上编译Linux内核源码
- mysql提取数字_Mysql中实现提取字符串中的数字的自定义函数分享
- 携手Visa IBM Watson IoT加速互联设备转化为潜在销售点
- SQL Error (1130): Host IP is not allowed to connect to this MySQL server
- Light OJ 1007
- Java类class cast()方法及示例
- 无监督学习 | PCA 主成分分析之客户分类
- 三星宣布华大九天成为其晶圆代工生态系统SAFE EDA合作伙伴
- 设备的开发【WP7学习札记之五】
- 太秀了!单片机内置 ADC 实现高分辨率采样?
- 关于如何提高代码可测试性的一些看法
- Qt 中利用 GNU barcode 生成一维条形码
- 继电器和蜂鸣器的使用
- 现成轮子OSAL操作系统抽象层的移植
- css超链接样式+雪碧图实现导航
- 微信小程序里面的标签和html标签的对比、微信小程序基础之常用控件