Пользовательское приложение Камера / Галерея не отображает SDCard/ папку точно
Я создал специальное приложение для камеры, которое сохраняет изображения в определенную папку на моей SD-карте и имеет собственный просмотр галереи для просмотра фотографий в этой папке "/sdcard/myApp/images"
Я тестировал его на двух разных планшетах: Galaxy Tab-1 10 дюймов и Galaxy Tab-2 10 дюймов. Камера отлично работает на обоих планшетах, снимая фотографии и сохраняя их в папке, созданной приложением. Но в галерее View на вкладке Tab1 не отображаются все фотографии в этой папке. На вкладке 2 всегда отображаются все фотографии, которые в данный момент находятся в папке, но на вкладке 1 часто отображаются только изображения в этой папке с момента последней перезагрузки планшета.
Таким образом, на вкладке "1", если у меня нет фотографий в этой папке, а затем сделайте два снимка с помощью камеры и переключитесь в режим просмотра галереи, он не показывает фотографий. Если я затем перезагружаюсь и иду в представление галереи, я вижу обе фотографии, но если я переключаюсь на камеру и делаю другую фотографию, галерея покажет только две фотографии до перезагрузки.
работает на андроиде 3.2 + но 3.1 нету!
Есть идеи?
курсор отправляется адаптеру в конструкторе galleryView:
// Set up an array of the Thumbnail Image ID column we want
String[] projection = {MediaStore.Images.Media._ID};
// Create the cursor pointing to the SDCard
cursor = managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection, // Which columns to return
MediaStore.Images.Media.DATA + " like ? ",
new String[] {"%LC/images%"},
MediaStore.Images.Media._ID + " DESC");
// Get the column index of the Thumbnails Image ID
columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
ga.setAdapter(new GallAdapter(this,cursor,columnIndex));
addapter:
public class GallAdapter extends BaseAdapter {
public Cursor cursor;
private int columnIndex;
private Context context;
int imageBackground;
String url;
Uri uri;
int originalImageId;
int imageID;
int columnData;
ViewGroup myp;
ImageView d;
public GallAdapter(Context ctx, Cursor cur, int cIn ) {
context = ctx;
columnIndex = cIn;
cursor = cur;
Log.v("GallAdapter", "COUNT:"+getCount());
}
@Override
public int getCount() {
return cursor.getCount();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
myp = parent;
View v;
if(convertView ==null){
v = LayoutInflater.from(context).inflate(R.layout.galitem, parent, false);
}else{
v = convertView;
}
ImageView photo = (ImageView) v.findViewById(R.id.imageView);
ImageView border = (ImageView) v.findViewById(R.id.borderView);
d = (ImageView) v.findViewById(R.id.delView);
// Move cursor to current position
cursor.moveToPosition(position);
// Get the current value for the requested column
imageID = cursor.getInt(columnIndex);
// obtain the image URI
uri = Uri.withAppendedPath( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID) );
url = uri.toString();
// Set the content of the image based on the image URI
originalImageId = Integer.parseInt(url.substring(url.lastIndexOf("/") + 1, url.length()));
Bitmap b = MediaStore.Images.Thumbnails.getThumbnail(context.getContentResolver(),
originalImageId, MediaStore.Images.Thumbnails.MINI_KIND, null);
photo.setImageBitmap(b);
photo.setScaleType(ImageView.ScaleType.FIT_CENTER);
d.setTag(uri);
d.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
String path = getRealPathFromURI((Uri) v.getTag());
alertBox("Warning!", "Are you sure you want to delete this photo?", path, v);
}
});
return v;
}
снова это работает на tab-2 (os 4.0) и tab-1 теперь, когда фирменное программное обеспечение было обновлено на tab-1 и os с 3.1 до 3.2, но почему это не работает..
1 ответ
Попробуйте это, чтобы обновить ваши медиа-файлы.
this._context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/Hugg/" + name)));