открыть камеру с помощью intent
Я хочу использовать intent
открыть camera
на Android .
я использовал следующие код но когда я нажимаю button
(чьи действия
6 ответов
File destination;
Uri selectedImage;
public static String selectedPath1 = "NONE";
private static final int PICK_Camera_IMAGE = 2;
private static final int SELECT_FILE1 = 1;
public static Bitmap bmpScale;
public static String imagePath;
mcamera = (Button) findViewById(R.id.button1);
mcamera.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String name = dateToString(new Date(), "yyyy-MM-dd-hh-mm-ss");
destination = new File(Environment
.getExternalStorageDirectory(), name + ".jpg");
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(destination));
startActivityForResult(intent, PICK_Camera_IMAGE);
}
});
// ......................gallery_function..........//
mgallery = (Button) findViewById(R.id.button2);
mgallery.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
openGallery(SELECT_FILE1);
}
});
на намерение // .........................Функция галереи.................//
public void openGallery(int SELECT_FILE1) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(
Intent.createChooser(intent, "Select file to upload "),
SELECT_FILE1);
}
//............ намерение.........
// ..................
protected void onActivityResult(int requestCode, int resultCode,
Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
Uri selectedImageUri = null;
String filePath = null;
switch (requestCode) {
case SELECT_FILE1:
if (resultCode == Activity.RESULT_OK) {
selectedImage = imageReturnedIntent.getData();
if (requestCode == SELECT_FILE1) {
selectedPath1 = getPath(selectedImage);
// mimagepath.setText(selectedPath1);
// Toast.makeText(Camera.this, "" + selectedPath1 + "",
// 500).show();
if (selectedPath1 != null) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
// image path `String` where your image is located
BitmapFactory.decodeFile(selectedPath1, options);
// Log.d("setpath ", "setpath " + selectedPath1);
;
}
}
break;
case PICK_Camera_IMAGE:
if (resultCode == RESULT_OK) {
try {
in = new FileInputStream(destination);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;
imagePath = destination.getAbsolutePath();
// Toast.makeText(Camera.this, "" + imagePath +
// "",Toast.LENGTH_LONG).show();
break;
}
}
попробуйте этот код
public static final int CAMERA_PIC_REQUEST = 1;//firstly define this
Intent photo= new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(photo, CAMERA_PIC_REQUEST);
параметр, переданный методу "on-click", имеет тип View
не int
как вы показываете.
по данным этой учебник ваш метод onClick должен быть следующим:
public void onclick( View v ){
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePictureIntent, CAMERA_PIC_REQUEST);
}
здесь CAMERA_PIC_REQUEST
определяется как (хотя я не совсем уверен, почему вы должны статически жестко это значение в приложении):
private static final int CAMERA_PIC_REQUEST = 1337;
обновление
CAMERA_PIC_REQUEST
используется для уникальной идентификации результата возвращение в onActivityResult
. Несколько startActivityForResult
запросы могут быть выдающимися в одно время.
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_PIC_REQUEST) {
if (resultCode == RESULT_OK) {
tv.setText("Got picture!");
imageData = (Bitmap) data.getExtras().get("data");
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageBitmap(imageData);
} else if (resultCode == RESULT_CANCELED){
tv.setText("Cancelled");
}
}
}
Я знаю, этот вопрос старый и ответ, но для тех, кто спрашивал, как получить файл изображения ? вот решение.
String ExternalStorageDirectoryPath = Environment.getExternalStorageDirectory().getAbsolutePath();
String targetPath = ExternalStorageDirectoryPath + "/DCIM/Camera";
File targetDirector = new File(targetPath);
File[] files = targetDirector.listFiles()
String ImagePath = files[ file.files-1 ].getAbsolutePath();
Bitmap bmp = BitmapFactory.decodeFile(pathName);
ivImage.setImageBitmap( bmp );
Также вам не нужно добавлять разрешения камеры в файл манифеста.
-ура и голосовать, если это поможет вам
-Счастлив Кодировок..
очень легко запустить камеру из вашего приложения для Android: просто напишите две строки кода в onClick метод
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA_PIC_REQUEST );
добавьте одно постоянное поле в свой класс (вы можете использовать любое случайное число вместо 7)
private int CAMERA_PIC_REQUEST = 7;
пожалуйста, взгляните на этот код, это работает.
//define the file-name to save photo taken by Camera activity
fileName = "new-photo-name.jpg";
//create parameters for Intent with filename
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION,"Image capture by camera");
imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
также примените этот метод для чтения изображения, когда вы взяли изображение с камеры.
//handling intent responses
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK)
try {
if (bitmap != null) {bitmap.recycle();}
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(imageUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
imageUriString = cursor.getString(column_index);
getContentResolver().notifyChange(imageUri, null);
ContentResolver cr = getContentResolver();
try {
bitmap = android.provider.MediaStore.Images.Media.getBitmap(cr, imageUri);
imageButtonPictureShop.setImageBitmap(bitmap);
// в этом.uploadImage(); этот.executeMultipartPost(); /- это.uploadFile (imageUriString); } catch (исключение e) { Тост.makeText (это, "не удалось загрузить", тост.LENGTH_SHORT).показывать(); если(электронная.метод GetMessage() != null) Log.e ("исключение", e.getMessage()); еще журнал.e ("исключение", " исключение"); е.печатные(); }
}
catch (Exception e)
{
if(e.getMessage() != null)Log.e("Exception" , e.getMessage());
else Log.e("Exception" , "Exception");
e.printStackTrace();
}
super.onActivityResult(requestCode, resultCode, data);
}