마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

예제소스에서 썸네일 이미지가 나타나지않습니다. 어느부분을 손대야하나요? 소스첨부

0 추천
package com.example.test;

import java.io.File;
import java.util.ArrayList;
import java.util.List;


import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.media.ThumbnailUtils;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.MediaStore.Video.Thumbnails;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity implements OnItemClickListener {
	Cursor cursor;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		ListView listView = (ListView) this.findViewById(R.id.ListView);

		String[] thumbColumns = { MediaStore.Video.Thumbnails.DATA,
				MediaStore.Video.Thumbnails.VIDEO_ID };

		String[] mediaColumns = { MediaStore.Video.Media._ID,
				MediaStore.Video.Media.DATA, MediaStore.Video.Media.TITLE,
				MediaStore.Video.Media.MIME_TYPE };

		cursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
				mediaColumns, null, null, null);

		ArrayList<VideoViewInfo> videoRows = new ArrayList<VideoViewInfo>();

		if (cursor.moveToFirst()) {
			do {

				VideoViewInfo newVVI = new VideoViewInfo();
				int id = cursor.getInt(cursor
						.getColumnIndex(MediaStore.Video.Media._ID));
				Cursor thumbCursor = managedQuery(
						MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI,
						thumbColumns, MediaStore.Video.Thumbnails.VIDEO_ID
								+ "=" + id, null, null);
				if (thumbCursor.moveToFirst()) {
					newVVI.thumbPath = thumbCursor.getString(thumbCursor
							.getColumnIndex(MediaStore.Video.Thumbnails.DATA));
					Log.v("", newVVI.thumbPath);
				}

				newVVI.filePath = cursor.getString(cursor
						.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
				newVVI.title = cursor.getString(cursor
						.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE));
				Log.v("", newVVI.title);
				newVVI.mimeType = cursor
						.getString(cursor
								.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE));
				Log.v("", newVVI.mimeType);
				videoRows.add(newVVI);
			} while (cursor.moveToNext());
		}
		listView.setAdapter(new VideoGalleryAdapter(this, videoRows));
		listView.setOnItemClickListener(this);
	}

	public void onItemClick(AdapterView<?> l, View v, int position, long id) {
		if (cursor.moveToPosition(position)) {
			int fileColumn = cursor
					.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
			int mimeColumn = cursor
					.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE);
			String videoFilePath = cursor.getString(fileColumn);
			String mimeType = cursor.getString(mimeColumn);
			Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
			File newFile = new File(videoFilePath);
			intent.setDataAndType(Uri.fromFile(newFile), mimeType);
			startActivity(intent);
		}
	}
}

class VideoViewInfo {
	String filePath;
	String mimeType;
	String thumbPath;
	String title;
}

class VideoGalleryAdapter extends BaseAdapter {
	private Context context;
	private List<VideoViewInfo> videoItems;

	LayoutInflater inflater;

	public VideoGalleryAdapter(Context _context, ArrayList<VideoViewInfo> _items) {
		context = _context;
		videoItems = _items;

		inflater = (LayoutInflater) context
				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	}

	public int getCount() {
		return videoItems.size();
	}

	public Object getItem(int position) {
		return videoItems.get(position);
	}

	public long getItemId(int position) {
		return position;
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		View videoRow = inflater.inflate(R.layout.row, null);
		ImageView videoThumb = (ImageView) videoRow
				.findViewById(R.id.ImageView);

		

		
		
		if (videoItems.get(position).thumbPath != null) {
			videoThumb
					.setImageURI(Uri.parse(videoItems.get(position).thumbPath));
		}

		TextView videoTitle = (TextView) videoRow.findViewById(R.id.TextView);
		videoTitle.setText(videoItems.get(position).title);
		
		return videoRow;
	}
}

 

익명사용자 님이 2014년 9월 30일 질문

1개의 답변

0 추천
setImageURI 를 사용 하는 방법에 문제가 있는 거 같네요

저기서 말하는 URI 는 content uri 입니다

 

파일 path 에서 파일을 불러 드리시는거면 bitmap 으로 만드시는게 좋지 않을까 하네요
kaisin (560 포인트) 님이 2014년 10월 2일 답변
...