Android: проблема с камерой (фотографировать)

У меня есть приложение, которое использует камеру по умолчанию, чтобы делать снимки и сохранять их в БД.

Код камеры, который я использовал:

package com.android.SamsungMIv4;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.ContentValues;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.Toast;

public class camera extends Activity {
private static final int TAKEPICTURE_ACTIVITY = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent i = new Intent("android.media.action.IMAGE_CAPTURE"); 
    try{ 
            startActivityForResult(i, TAKEPICTURE_ACTIVITY); 
    }catch(ActivityNotFoundException e){ 
            Toast.makeText(this, "Application not available", 
Toast.LENGTH_SHORT).show();} 
            //Log.e(TAG, "Error in taking picture"); 
    } 
 @Override 
  protected void onActivityResult(int requestCode, int resultCode, 
Intent intent) { 
      super.onActivityResult(requestCode, resultCode, intent); 
  if (requestCode == TAKEPICTURE_ACTIVITY){ 
            if (resultCode == RESULT_OK) { 
                            Bundle extras = intent.getExtras(); 
                            Bitmap bitmap = (Bitmap) extras.get("data") ; 

         } 
} 
} 
}

Но проблема в том, что я не могу указать имя для захваченного изображения, и это вызовет у меня проблемы в БД. Итак, как мне 1) включить способ добавления имени файла для захваченного изображения ИЛИ 2) Я предполагаю, что «растровое изображение» здесь содержит мое захваченное изображение. Если да, то как мне сохранить его в место вместе с именем, которое я укажу. ИЛИ 3) Поскольку эта камера является службой, которую я использую в отдельном действии, есть ли способ вернуть захваченное изображение в предыдущее действие с использованием значений содержимого?


person Sudhir R    schedule 17.07.2011    source источник


Ответы (1)


Получение данных, как вы сделали с методом .getExtras("data"), позволит вам получить версию фотографии в высоком разрешении. Чтобы сохранить файл, воспользуйтесь методом сжатия[1]. Затем, используя FileOutputSteam[2], вы можете легко определить имя файла, в который вы хотите сохранить.

  1. http://developer.android.com/reference/android/graphics/Bitmap.html#compress(android.graphics.Bitmap.CompressFormat, int, java.io.OutputStream)

  2. http://download.oracle.com/javase/1.4.2/docs/api/java/io/FileOutputStream.html

person chris    schedule 17.07.2011