2013-02-25 5 views
0

Я написал свою собственную деятельность по работе с камерой, я показываю предварительный просмотр фотографий в формате FrameLayout, но живое изображение не кажется естественным, оно немного высокое, я думаю, что это потому что размеры FrameLayout не соответствуют размерам камеры. что я должен сделать, чтобы исправить это?Android: размеры камеры не совпадают с размерами экрана

Вот XML-файл активности камеры:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

<FrameLayout 
    android:id="@+id/camera_preview" 
    android:layout_width="wrap_content" 
    android:layout_height="0dip" 
    android:layout_weight="0.86" /> 

<Button 
    android:id="@+id/button_capture" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="16dp" 
    android:gravity="center" 
    android:onClick="capture" 
    android:text="Capture" /> 

<Button 
    android:id="@+id/button_accept" 
    android:layout_width="115dp" 
    android:layout_height="wrap_content" 
    android:text="Accept" 
    android:visibility="gone" 
    android:onClick = "accept" /> 

<Button 
    android:id="@+id/button_retake" 
    android:layout_width="107dp" 
    android:layout_height="wrap_content" 
    android:text="Retake" 
    android:visibility="gone" 
    android:onClick = "retake"/> 

</LinearLayout> 

ответ

0

проблема может быть решена так:

 Parameters cameraParam = mCamera.getParameters() ; 
     double ratio = (double)cameraParam.getPictureSize().height/(double)cameraParam.getPictureSize().width ; 
     Display display = getWindowManager().getDefaultDisplay(); 
     Point size = new Point(); 
     try 
     { 
      display.getSize(size); 
     } 
     catch(java.lang.NoSuchMethodError ignore) 
     { 
      size.x = display.getWidth(); 
      size.y = display.getHeight() ; 
     } 
     int width = size.y; 
     int height = size.x; 
     previewParam.width = width; 
     previewParam.height = (int)(previewParam.width/ratio) ; 
1

Вы должны масштабировать изображение, которое было принято из камеры. Вы могли бы попробовать что-то вроде этого:

private Bitmap scaleImage(ImageView imageView, String path) { 
int targetWidth = imageView.getWidth(); 
int targetHeight = imageView.getHeight(); 

BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 
bitmapOptions.inJustDecodeBounds = true; 
BitmapFactory.decodeFile(path, bitmapOptions); 
int photoWidth = bitmapOptions.outWidth; 
int photoHeight = bitmapOptions.outHeight; 

int scaleFactor = Math.min(photoWidth/targetWidth, photoHeight/targetHeight); 

bitmapOptions.inJustDecodeBounds = false; 
bitmapOptions.inSampleSize = scaleFactor; 
bitmapOptions.inPurgeable = true; 

return BitmapFactory.decodeFile(path, bitmapOptions); 

}

+0

Нет, фотографии, которые были взяты из камеры отлично, только живая картинка который отображается в предварительном просмотре камеры (перед съемкой), немного высок! – Navid777

+0

Ваш код, чтобы открыть камеру, похожую на: Намеренная камераIntent = новое намерение (android.provider.MediaStore.ACTION_IMAGE_CAPTURE); getActivity(). StartActivityForResult (cameraIntent, IMAGE_CAPTURE_REQUEST_CODE); – lokoko

+0

нет, я написал свою собственную деятельность камеры – Navid777

Смежные вопросы