我正在尝试在Android上捕获图像并将其显示在图像视图上; 活动开始时调用的捕获意图,图像视图与调用捕获Intent的活动相同 当我运行应用程序时,相机捕获图像TWICE然后在图像视图中显示图像?!任何想法为什么?我该如何解决?
> Activity.java
public class View extends Activity{
ImageView imgview;
Bitmap Bmp;
final static int cameraData = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camera);
imgview = (ImageView) findViewById(R.id.imgview);
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, cameraData);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bmp = (Bitmap) extras.get("data");
imgview.setImageBitmap(Bmp); }
}}
> camera.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:opencv="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/imgview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:contentDescription="Image view"
android:src="@drawable/ic_launcher"
/>
</FrameLayout>
答案 0 :(得分:0)
你最好在活动时给startActivityForResult()
打电话(例如按一下按钮)。
不是直接调用onCreate()
,而是在按钮点击内添加一个按钮并启动相机意图。
答案 1 :(得分:0)
基本上只是一个猜测,但我认为您的活动onCreate方法也是在相机拍完第一张照片后调用的(!?)尝试类似
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camera);
imgview = (ImageView) findViewById(R.id.imgview);
if(!getIntent.hasExtra("data")){
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, cameraData);
}
}
我对此不太确定,现在无法测试一些东西(这里没有安装sdks),但我希望它有所帮助!
答案 2 :(得分:0)
我正在主持您的代码并且看不到任何内容,除了相机应用程序之外我看起来很熟悉。
以下是Camera Apps
的指南乍一看,您可以执行以下操作:
Camera
个实例和CameraPreview
(一个FrameLayout
),并将预览放入您的布局中。Camera.takePicture()
。onPictureTaken()
的{{1}}。在PictureCallback
内,您可以获得包含onPictureTaken()
的图像数据的文件。