public static Bitmap bitmap;
//得到当前摄像头图片信息
public void getBitmap() {
bitmap = cameraCommandUtil.httpForImage(FirstActivity.IPCamera);
phHandler.sendEmptyMessage(10);
}
// 开启线程接受摄像头当前图片(实时接收)
private Thread phThread = new Thread(new Runnable() {
public void run() {
while (true) {
getBitmap();
}
}
});
//显示图片
@SuppressLint("HandlerLeak")
private Handler phHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 10) {
image_show.setImageBitmap(bitmap);
}
}
}; 根据上面的代码可以实时一帧一帧地显示出拍摄到的画面,我觉得可以实时显示是因为用了线程的原因?就是每次都sendmessage,然后每次都判断message是否为接收图片时的message,然后就一直动态一帧一帧地显示出来。还请大牛解答。
然后是我现在想添加一个Button,当我按下button时才完成上面的操作,也就是当我按下button时能够实时地显示画面。
private class xiangying1 implements View.OnClickListener{
@Override
public void onClick(View v){
image_show.setImageBitmap(bitmap);
}
} 我按照这样直接image_show,当我按下按钮时只能显示一张照片,相当于拍照,而且程序会卡住。我是应该在button里面添加线程吗?
希望大家可以解答,谢谢各位~
//得到当前摄像头图片信息
public void getBitmap() {
bitmap = cameraCommandUtil.httpForImage(FirstActivity.IPCamera);
phHandler.sendEmptyMessage(10);
}
// 开启线程接受摄像头当前图片(实时接收)
private Thread phThread = new Thread(new Runnable() {
public void run() {
while (true) {
getBitmap();
}
}
});
//显示图片
@SuppressLint("HandlerLeak")
private Handler phHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 10) {
image_show.setImageBitmap(bitmap);
}
}
}; 根据上面的代码可以实时一帧一帧地显示出拍摄到的画面,我觉得可以实时显示是因为用了线程的原因?就是每次都sendmessage,然后每次都判断message是否为接收图片时的message,然后就一直动态一帧一帧地显示出来。还请大牛解答。
然后是我现在想添加一个Button,当我按下button时才完成上面的操作,也就是当我按下button时能够实时地显示画面。
private class xiangying1 implements View.OnClickListener{
@Override
public void onClick(View v){
image_show.setImageBitmap(bitmap);
}
} 我按照这样直接image_show,当我按下按钮时只能显示一张照片,相当于拍照,而且程序会卡住。我是应该在button里面添加线程吗?
希望大家可以解答,谢谢各位~
解决方案 »
- Android编译问题,急
- 关于取到GPS经纬度后在GoogleMap上定点偏差的问题。
- webview执行本地网页的js脚本报错
- 为什么我的按键事件捕获不到? 在线等
- 为什么这么写,cursor里面没有数据呢?
- 我想学android中间件开发,应该看些什么书?
- 如何获得app缓存大小并清除?
- android上调用系统的硬解码
- Genymotion模拟器运行项目 jPush报错jpush Couldn't load jpush: findLibrary returned null
- 关于同时包含file和JSON的POST方法
- Android 通话录音设置问题
- 大神们,请教下这是内存溢出的问题吗
频繁的绘制是SurfaceView做的,你百度一下就知道了
public void onClick(View v) {
switch (v.getId()) {
case R.id.camera_toggle://是一个ImageButton
boolean toggle = toggleSP.getBoolean("toggle", false);//通过Sharedpreference保存flag值
if (toggle) {
toggleSP.edit().putBoolean("toggle", false).apply();
synchronized (mSync) {
if (mCamera != null) {
mCamera.stopPreview();//调用摄像头停止预览
}
if (mMonitor != null) {
mMonitor.unregister();
}
}
} else {
toggleSP.edit().putBoolean("toggle", true).apply();
mMonitor.register();
synchronized (mSync) {
if (mCamera != null) {
mCamera.startPreview();//摄像头开启预览
}
}
}
break;