2017-11-03 1 views
0

Ich versuche einfache Kamera-App für ein Projekt zu bauen, aber ich kann keine Kamera-Kamera-Bibliotheken wie Camera Kit verwenden. Und ich benutze Camera2 apis nicht, weil ich Rückwärtskompatibilität benötige.Das Foto, das ich festhalte, ist niedrige Entschließung, wie kann ich es volles Resolution machen?

Ich habe benutzerdefinierte CameraPreview (erweitert SurfaceView implementiert SurfaceHolder.Callback) Klasse App zeigt Echtzeitvorschau. Aber wenn ich das Bild in Meine Hauptaktivität speichere, speichert es in 320x240 Auflösung.

Ich konnte nicht verstehen, warum es in 240p speichert und wie kann ich diese Daten in voller Auflösung speichern?

Dies ist die Aktivität, wo es das Bild speichert;

public class FullscreenActivity extends Activity implements Camera.PictureCallback { 
    public final static String DEBUG_TAG = "MakePhotoActivity"; 
    public Camera camera; 
    private int cameraId = 0; 

    private Uri filerui; 
    boolean visibility =false; 
    private static final String IMAGE_DIRECTORY_NAME = "hellocamera"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_fullscreen); 

     //Check Permission 
     FullscreenActivityPermissionsDispatcher.NeedCameraPermissinWithPermissionCheck(this); 

     // do we have a camera? 
     cameraId = findCamera(); 
     if (getBoolean()) { 
      visibility=true; 
      camera=Camera.open(cameraId); 
      initCameraPreview(); 
     } 
    } 

    //iniitaiate preview 
    public void initCameraPreview(){ 
     CameraPreview cameraPreview= (CameraPreview) findViewById(R.id.camerePreview); 
     if (visibility) { 
      cameraPreview.setVisibility(View.VISIBLE); 
      visibility=false; 
     } 
     cameraPreview.init(camera); 
    } 

    //This is the button ı capture photos 
    public void onClick(View view) { 
     camera.takePicture(null, null, this); 
    } 

    @Override 
    public void onPictureTaken(byte[] data, Camera camera) { 
     Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     File imagesFolder = new File(Environment.getExternalStorageDirectory(), "DCIM"); 
     imagesFolder.getAbsolutePath(); 
     String fileName = Helper.save(); 
     File output = new File(imagesFolder, fileName); 

     Uri uriSavedImage = Uri.fromFile(output); 
     imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage); 

     OutputStream imageFileOS; 
     try { 
      imageFileOS = getContentResolver().openOutputStream(uriSavedImage); 
      imageFileOS.write(data); 
      imageFileOS.flush(); 
      imageFileOS.close(); 

     } catch (FileNotFoundException e) { 
      // Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

Antwort

0

Ok, löste ich das Problem selbst, es turnsout Ich war nicht fähig parameters.getSupportedPictureSizes zu implementieren()) richtig. Wenn jemand anderes auf ein ähnliches Problem stößt, könnte dies auch die Ursache Ihres Problems sein.

Verwandte Themen