SORU
15 Aralık 2009, Salı


Niyet Android ACTİON_İMAGE_CAPTURE

Yerli kamera uygulaması kullanıcı yeni bir fotoğraf çekmek için izin kullanmak için çalışıyoruz. EXTRA_OUTPUT extra ayrılıp küçük bit Eşlem görüntüsünü verir gayet güzel çalışıyor. 4 ** başlamadan önce niyet üzerine ancak, her şeye "Tamam" kamera uygulamasında düğmesine basın. vurmak için deneyin kadar çalışır "Ok" düğmesi hiçbir şey yapmaz. Kamera uygulaması açık kalır ve hiçbir şey kilitleniyor. Bunu iptal edebiliriz, ancak dosyayı hiç yazılmayacaktı. Biz tam olarak yapmak ACTION_IMAGE_CAPTURE resim dosyası için alınan yazmaya çıkmak için ne yapmam lazım?

Edit: Bu MediaStore.ACTION_IMAGE_CAPTURE niyet ile, sadece açıklığa kavuşturmak için yapılır

CEVAP
19 Aralık 2009, CUMARTESİ


bu android bazı sürümlerinde well documented bug. bu, google android deneyimi oluşturur, görüntü yakalama belirtildiği gibi çalışmıyor. genel olarak kullandım ne yarar bir sınıfta böyle bir şey.

public boolean hasImageCaptureBug() {

    // list of known devices that have the bug
    ArrayList<String> devices = new ArrayList<String>();
    devices.add("android-devphone1/dream_devphone/dream");
    devices.add("generic/sdk/generic");
    devices.add("vodafone/vfpioneer/sapphire");
    devices.add("tmobile/kila/dream");
    devices.add("verizon/voles/sholes");
    devices.add("google_ion/google_ion/sapphire");

    return devices.contains(android.os.Build.BRAND   "/"   android.os.Build.PRODUCT   "/"
              android.os.Build.DEVICE);

}

o zaman ben görüntü yakalamak başlattığınızda, hata olup olmadığını kontrol eden bir niyet oluşturun.

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
if (hasImageCaptureBug()) {
    i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File("/sdcard/tmp")));
} else {
    i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
}
startActivityForResult(i, mRequestCode);

döndüğümde aktivite içinde, cihaza bağlı olarak farklı şeyler yapıyorum.

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
     switch (requestCode) {
         case GlobalConstants.IMAGE_CAPTURE:
             Uri u;
             if (hasImageCaptureBug()) {
                 File fi = new File("/sdcard/tmp");
                 try {
                     u = Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(), fi.getAbsolutePath(), null, null));
                     if (!fi.delete()) {
                         Log.i("logMarker", "Failed to delete "   fi);
                     }
                 } catch (FileNotFoundException e) {
                     e.printStackTrace();
                 }
             } else {
                u = intent.getData();
            }
    }

bu yeni kamera uygulaması yazmak zorunda kaydeder, ama bu kod da çok iyi sayılmaz. büyük sorunları vardır

  1. hiç boy resimleri tam olsun bu hata ile cihazlar. olsun 512px resimleri geniş olan görüntü içerik eklenir sağlayıcı. bu olmadan cihazlarda böcek, her şey çalışıyor gibi belge, büyük normal bir resim olsun.

  2. listeyi korumak zorundayız. olarak yazılı, cihazlar için mümkündür bir sürümü ile parladı olacak android (cyanogenmod's builds) söylemek bu hata düzeltildi. eğer böyle bir şey olursa, senin kod olacak crash. düzeltme, tüm kullanmaktır aygıt parmak izi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007
  • Max Lee

    Max Lee

    18 AĞUSTOS 2006
  • SHAYTARDS

    SHAYTARDS

    1 EKİM 2008