package com.android.adapter; import android.Manifest; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.media.ThumbnailUtils; import android.net.Uri; import android.provider.DocumentsContract; import android.provider.MediaStore; import android.support.v4.provider.DocumentFile; import android.util.Log; import android.util.LruCache; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.ListAdapter; import android.widget.TextView; import android.widget.Toast; import com.android.entity.Constant; import com.android.entity.PlayMessage; import com.android.play.R; import java.io.File; import java.lang.reflect.Array; import java.util.ArrayList; public class MediaPlayAdapter extends BaseAdapter { private Context context; boolean isChecked; //创建Cache 缓存 private LruCache<String, Bitmap> mCaches; public MediaPlayAdapter(Context context){ this.context = context; Log.i("fenghaitao"," mediaplay adapter new "); mCaches = Constant.mCaches; } @Override public int getCount() { // TODO Auto-generated method stub return Constant.mediaList.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View view = convertView; Hold hold; if(view == null){ hold = new Hold(); view = View.inflate(context, R.layout.playlist_item,null); hold.tv_name=(TextView) view.findViewById(R.id.tv_pname); hold.tv_dur = (TextView) view.findViewById(R.id.tv_pduration); hold.tv_size = (TextView) view.findViewById(R.id.tv_pszie); hold.imageView= (ImageView) view.findViewById(R.id.im_suo); hold.deleteButton = view.findViewById(R.id.delete_button); view.setTag(hold); } hold = (Hold) view.getTag(); PlayMessage message = Constant.mediaList.get(position); String url = message.getPath(); Bitmap bitmap = getBitmapFromCache(url); Log.i("fenghaitao"," mediaplay bitmap = " + bitmap); if(bitmap == null){ bitmap = getVideoThumbnail(url,60,60,MediaStore.Images.Thumbnails.MICRO_KIND); if(bitmap != null){ addBitmapToCache(url,bitmap); hold.imageView.setImageBitmap(bitmap); } }else { hold.imageView.setImageBitmap(bitmap); } //hold.imageView.setImageBitmap(getVideoThumbnail(message.getPath(), 60, 60, MediaStore.Images.Thumbnails.MICRO_KIND)); hold.tv_name.setText(message.getName()); hold.tv_dur.setText(Constant.movieTimeFormat(message.getDuration())); hold.tv_size.setText(Constant.mediaSize(message.getSize())+"Mb"); hold.deleteButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(context, "delete item", Toast.LENGTH_SHORT).show(); showDeleteDialog(context, position); } }); return view; } class Hold{ TextView tv_name; TextView tv_dur; TextView tv_size; ImageView imageView; View deleteButton; } //增加到缓存,增加的同时判断是否已经存在 public void addBitmapToCache(String url, Bitmap bitmap){ if (getBitmapFromCache(url) == null){ mCaches.put(url,bitmap); } } //从缓存中获取数据 public Bitmap getBitmapFromCache(String url){ return mCaches.get(url); } private Bitmap getVideoThumbnail(String videoPath, int width, int height, int kind) { Bitmap bitmap = null; //获得系统缩略图 bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, kind); bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT); return bitmap; } /* 自定义Dialog注意加载顺序 */ private void showDeleteDialog(final Context contextdialog, final int position){ String [] items = new String[]{"是否删除原文件"}; AlertDialog.Builder builder = new AlertDialog.Builder(contextdialog); View view = View.inflate(contextdialog, R.layout.delete_dialog_item_video, null); Button dialogCancel = (Button) view.findViewById(R.id.dialog_cancel); Button dialogOk = (Button) view.findViewById(R.id.dialog_ok); builder.setView(view); //1,先加载布局 final AlertDialog dialog = builder.create(); //2,获得实例 dialogCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (dialog != null) dialog.dismiss(); } }); dialogOk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String name = Constant.mediaList.get(position).getName(); String path = Constant.mediaList.get(position).getPath(); Constant.mediaList.remove(position); Uri uri = Uri.parse("content://com.vanzo.database.videoprovider/delete"); context.getContentResolver().delete(uri, "name = ?", new String[]{name}); Log.i("fenghaitao", "===isChecked="+isChecked+", ===path="+path); if(isChecked){ File file = new File(path); if(file.exists()){ Log.i("fenghaitao", "===delete file="+path); file.delete(); } Uri fileUri = Uri.fromFile(file); context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,fileUri)); } notifyDataSetChanged(); dialog.dismiss(); } }); CheckBox mCheck = (CheckBox) view.findViewById(R.id.check_dialog_sum); if(Constant.mediaList.get(position).getPath().contains("DCIM")){ mCheck.setVisibility(View.GONE); } mCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { isChecked = b; } }); dialog.show(); } }