将捕获的图像保存在下一个活动中

时间:2012-10-25 09:56:05

标签: android image camera sd-card

我想在下一个活动中保存并显示捕获的图像。我已经编写了代码,但它不能在我的代码中进行哪些修改。

 camera.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.d("Coming in the camera intent","coming in yhe camera intent");
                    String filePath = Environment.getExternalStorageDirectory()+ "/s1.jpeg";
                    File file = new File(filePath);
                    Uri output = Uri.fromFile(file);
                    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
                    startActivityForResult(cameraIntent, CAMERA_REQUEST); 
                }
            });
        }
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
            if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {  
                Log.d("Coming in the if loop","coming in the if loop");
                Bitmap photo = (Bitmap) data.getExtras().get("data"); 
                Intent i1=new Intent(MyMenu.this,FullScreen.class);
                i1.putExtra("photooo",photo);
                startActivity(i1);
            }  
        } 

和我要保存并显示图像的接收活动

image=(ImageView)findViewById(R.id.image);
        note=(ImageButton)findViewById(R.id.note);
        tick=(ImageButton)findViewById(R.id.tick);
        cross=(ImageButton)findViewById(R.id.cross);
        Intent intent = getIntent();
        Bitmap photo = (Bitmap) intent.getParcelableExtra("photooo");
        image.setImageBitmap(photo);
    }

堆叠

10-25 12:50:30.459: E/AndroidRuntime(27740): java.lang.RuntimeException: Unable to resume activity {com.example.babysnap/com.example.babysnap.MyMenu}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1888, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.example.babysnap/com.example.babysnap.MyMenu}: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.babysnap/com.example.babysnap.FullScreen}; have you declared this activity in your AndroidManifest.xml?

3 个答案:

答案 0 :(得分:1)

您的FullScreen Activity似乎未在 AndroidManifest.xml 文件中声明。

检查一下。 并宣布它。

答案 1 :(得分:0)

而不是Bitmap尝试传递imagepath。你已经获得了Uri output;来自这个获取文件路径。

String imagepath=output.getPath(); then intent.putExtra("imagepath",imagepath)

在其他活动中获取此字符串:

String path= getIntent().getStringExtra("imagepath"). then

Bitmap myBitmap = BitmapFactory.decodeFil(path);    
ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);
myImage.setImageBitmap(myBitmap);

Read here。您也可以使用字节数组

来完成

答案 2 :(得分:0)

首先将图像转换为字节数组然后传入Intent并在下一个活动中从Bundle获取字节数组并转换为图像(位图)并设置为ImageView。

将位图转换为字节数组: -

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

将字节数组传递给intent: -

Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("picture", byteArray);
startActivity(intent);

从Bundle获取字节数组并转换为位图图像: -

Bundle extras = getIntent().getExtras();
byte[] byteArray = extras.getByteArray("picture");

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageBitmap(bmp);

并在Androidmanifest.xml中写下声明Activity的代码。

<activity
    android:name=".FullScreen"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>