2010-04-26 22 views
10

Ben daha büyük bir sürecin bir parçası olarak kullanıcı çekilen görüntüleri kullanan bir Android uygulama oluşturma görüntüyü kaydedin. Şimdiye kadar benim XML düzeni bir RelativeLayout içinde bir SurfaceView ve Düğme var. SurfaceView üzerinde görünmesi için kamera önizlemesini almayı başardım ancak bir kullanıcı bir düğmeye bastığında nasıl fotoğraf çekilip kaydedileceğine bağlı kaldım.alın ve düğmeye basın

Benim sınıf dosyası CameraPreview API demo gibi görünür: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html

İdeal, ne zaman kamera, (clicky sesli) resmini çekin otofokus /data/data/app_package_structure/files/file_name.jpg kaydedin, sonra pop gerekir basılan düğme kullanıcıya görüntülerinin kaydedildiğini bildirmek için bir Tost kadar.

Herhangi bir yardım çok takdir edilir :) take-a-resim-ve-save-it parçası kolları

cevap

12

ben CommonsWare gerçekten zaten bu sorunun en yanıtlamıştır düşünüyorum, ama bu otomatik odaklama ve deklanşör sesi için işe yarayabilecek. Bu bir tahmindir, çünkü hiçbirini derleyemediğim/test edemediğim bir makinede değilim. Düğmeniz pres işleme kodunda

, ben camera kameranızın nesnesidir ve photoCallback CommonsWare en örnekte olduğu gibi aynı nerede (muhtemelen Mesaj yollama ile)

camera.autoFocus(new Camera.AutoFocusCallback() { 
    Camera.ShutterCallback shutterCallback = new Camera.ShutterCallback() { 
    public void onShutter() { 
     // Play your sound here. 
    } 
    }; 
    public void onAutoFocus(boolean success, Camera camera) { 
    camera.takePicture(shutterCallback, null, photoCallback); 
    } 
}); 

aramalısınız inanıyoruz.

sen takılıp olduğunu bu nedir Tam olarak?

Oh ve <uses-feature> etiketi android.hardware.camera.autofocus eklemeyi unutmayın. (Ben zaten daha önce gördüm) ama gerçekten benim soruya daha kapsamlı bir cevap arıyorum o Numuneler için :)

+0

Bu mükemmel bir yardımcıdır. Otofokusum şimdi harika çalışıyor. Fotoğrafı saklamak için sadece bir engelim var. TakePicture() tarafından döndürülen şey, photoCallback uygulamasında ne yapar ve bu sonucu bir resim olarak nasıl kaydederim? – greenie

+1

Eh, benim tahminim 'takePicture' hiçbir şey döndürmez, bunun yerine resim onPictureTaken (byte [] veri, Kamera kamera) 'geri arama yöntemi ile bir JPEG biçiminde byte-array photoCallback olarak geçirilir. Muhtemelen bu baytları dosyaya yazmanız yeterlidir. –

+0

En azından bu, http://developer.android.com/reference/android/hardware/Camera.PictureCallback.html ve http://developer.android.com/reference/android/hardware/Camera.html# adresindeki izlenimimdi. takePicture% 28android.hardware.Camera.ShutterCallback,% 20android.hardware.Camera.PictureCallback,% 20android.hardware.Camera.PictureCallback% 29 –

9

Here is a sample application. Otomatik odaklama, clicky, Toast ve veya SD kart app-yerel dosya deposuna kaydetme öğrenci için egzersizler olarak bırakılır. :-)

+0

teşekkürler. – greenie

+0

@CommonsWare: Sadece bir güncelleme - SurfaceHolder'a geliştirici belgelerinde bakıyordum ve setType yönteminin kullanımdan kaldırıldığını ve bu nedenle SURFACE_TYPE_PUSH_BUFFERS, SURFACE_TYPE_NORMAL, SURFACE_TYPE_HARDWARE ve SURFACE_TYPE_GPU sabitleri olduğunu belirtiyor. – Abhijit

+0

@Abhijit: Android 3.0'dan itibaren kullanımdan kaldırıldılar. Onlara Android 1.x ve 2.x için ihtiyacınız var. Android 3.x ve üstü için atlanabilirler. – CommonsWare

İlgili konular