2013-06-12 16 views
8

Telefon galerisine erişmek, rastgele bir görüntü seçip görüntüde görüntülemek mümkün mü? yani tüm işlemi kullanıcı müdahalesi olmadan, bir görüntü seçmek veya bir uri göndermek zorunda kalmak zorundadır.Telefondan rasgele bir fotoğraf alın ve ekran görünümünde

Teşekkürler!

+1

, aşağıda Blackbelt olarak verdikleri yanıtlara için zamanında bu ödül için emin olun için kaynak olarak koydu. Aksi takdirde, yoksul itibar, israfa gidecek ve hiç kimsenin faydası olmayacaktır * sadface *. –

+0

Haklısınız, –

cevap

18

Aşağıdaki kod parçacığı, galerinin içeriğini alır ve her görüntü yolunu bir dizi listesine yerleştirir. Sonra rastgele ArrayList içine yolun birini seçebilir ve bir ImageView

Handler handler = new Handler(); 

protected int counter = 0; 
private ImageView mImageView; 
private Bitmap currentBitmap = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.image); 
    mImageView = (ImageView) findViewById(R.id.imageView); 
    String[] projection = new String[]{ 
      MediaStore.Images.Media.DATA, 
    }; 

    Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 
    Cursor cur = managedQuery(images, 
      projection, 
      "", 
      null, 
      "" 
    ); 

    final ArrayList<String> imagesPath = new ArrayList<String>(); 
    if (cur.moveToFirst()) { 

     int dataColumn = cur.getColumnIndex(
       MediaStore.Images.Media.DATA); 
     do { 
      imagesPath.add(cur.getString(dataColumn)); 
     } while (cur.moveToNext()); 
    } 
    cur.close(); 
    final Random random = new Random(); 
    final int count = imagesPath.size(); 
    handler.post(new Runnable() { 
     @Override 
     public void run() { 
      int number = random.nextInt(count); 
      String path = imagesPath.get(number); 
      if (currentBitmap != null) 
       currentBitmap.recycle(); 
       currentBitmap = BitmapFactory.decodeFile(path); 
      mImageView.setImageBitmap(currentBitmap); 
      handler.postDelayed(this, 1000); 
     } 
    }); 

} 
+0

güzel kod snippet'i olacak. +1 – Raghunandan

+0

teşekkürler @Raghunandan – Blackbelt

+0

Bunu kontrol etmek için zamanım olmadı ama 8 upvotes kodun işe yaradığını söylüyor, bu yüzden ödülün seninki de :) Yardım için çok teşekkürler! –

İlgili konular