2010-12-30 11 views
2

Ich bin von hier genauer Code zu integrieren: http://labs.makemachine.net/2010/03/simple-android-photo-capture/Android 2.2 SDK - Speichermedium Beispiel nicht funktioniert

Wie die Aktivität funktionieren soll: Klicken Sie „Taste“ -> geht Kamera auf dem Standard. Foto machen. "Retake" Knopf funktioniert, "Abbrechen" Knopf funktioniert (bringt zurück zum "Knopf" Layout), aber der "OK" Knopf funktioniert nicht (und dann sollte das Bild über dem "Knopf" im vorherigen Layout erscheinen). Hat das etwas damit zu tun, wie es Bild auf SD-Karte speichert? Ich kann es nicht herausfinden! Außerdem teste ich diese App auf einem Gerät.

Antwort

1

Verstanden zu arbeiten: benötigt

package com.android.xxx; 

import java.io.File; 

import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.provider.MediaStore; 
import android.view.Window; 

public class CameraView extends MenusHolder { 

    protected String _path; 
    protected boolean _taken; 

    protected static final String PHOTO_TAKEN = "photo_taken"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.create_event_view); 

     File imageDirectory = new File(Environment.getExternalStorageDirectory() + "/MyFolder/"); 
     imageDirectory.mkdirs(); 

     _path = Environment.getExternalStorageDirectory() + "/MyFolder/temporary_holder.jpg"; 

     startCameraActivity(); 

    } 

    protected void startCameraActivity() { 

     File file = new File(_path); 
     Uri outputFileUri = Uri.fromFile(file); 

     Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 

     startActivityForResult(intent, 0); 

    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     switch(resultCode) { 

      case 0: 
       finish(); 
       break; 

      case -1: 
       onPhotoTaken(); 
       break; 

     } 

    } 

    protected void onPhotoTaken() { 

     _taken = true; 
     finish(); 
     Intent newView1 = new Intent(CameraView.this, CreateEventView.class); 
     CameraView.this.startActivity(newView1); 

    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 

     outState.putBoolean(CameraView.PHOTO_TAKEN, _taken); 

    } 

    @Override 
    protected void onRestoreInstanceState(Bundle savedInstanceState) { 

     if (savedInstanceState.getBoolean(CameraView.PHOTO_TAKEN)) { 

      onPhotoTaken(); 

     } 

    } 

} 
+0

Eine weitere Sache zu zählen ist in Ihrem Manifest so können Sie ein neues Verzeichnis erstellen. – Rydell

Verwandte Themen