Observer + onChange 实现video和images的监控
2013-06-25 15:04
295 查看
import android.app.Activity; import android.database.ContentObserver; import android.database.Cursor; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.provider.MediaStore; import android.view.Gravity; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imgObserver(); videoObserver(); } private void imgObserver(){ //注册观察者,监听照片 final Uri uri = Uri.parse("content://media/external/images"); getContentResolver().registerContentObserver(uri, true, new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { //查询出第一条记录 Cursor c=getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, "_id DESC LIMIT 1"); //MediaStore.Images.Media.INTERNAL_CONTENT_URI //MediaStore.Images.Media.EXTERNAL_CONTENT_URI if(c.moveToNext()){ int imageId = c.getInt((c.getColumnIndex( MediaStore.Images.Media._ID))); Bitmap bm = MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), imageId, MediaStore.Images.Thumbnails.MINI_KIND, null); Toast toast = Toast.makeText(MainActivity.this, "刚才的IMG", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER,20, 69); LinearLayout linearLayout =(LinearLayout)toast.getView(); ImageView imageView = new ImageView(MainActivity.this); imageView.setImageBitmap(bm); linearLayout.addView(imageView,1); toast.setView(linearLayout); toast.show(); } } }); } private void videoObserver(){ //注册观察者,监听视频 final Uri uri = Uri.parse("content://media/external/video"); getContentResolver().registerContentObserver(uri, true, new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { //查询出第一条记录 Cursor c=getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null, null, "_id DESC LIMIT 1"); if(c.moveToNext()){ int imageId = c.getInt((c.getColumnIndex( MediaStore.Video.Media._ID))); Bitmap bm = MediaStore.Video.Thumbnails.getThumbnail(getContentResolver(), imageId, MediaStore.Video.Thumbnails.MINI_KIND, null); Toast toast = Toast.makeText(MainActivity.this, "刚才的Video", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER,20, 69); LinearLayout linearLayout =(LinearLayout)toast.getView(); ImageView imageView = new ImageView(MainActivity.this); imageView.setImageBitmap(bm); linearLayout.addView(imageView,1); toast.setView(linearLayout); toast.show(); } } }); } }
相关文章推荐
- onpropertychange 实时监控input输入框事件实现
- asp.net关于onpropertychange和oninput事件实现代码
- RadioButton单选按钮实现RadioGroup.OnCheckedChangeListener
- havlenapetr-FFMpeg OnVideoSizeChangedListener接口的实现
- ffmpeg+nginx+video实现rtsp流转hls流,通过H5查看监控视频
- Informix 11.5 SQL 语句性能监控方法及实现(set explain on 执行计划)
- 网上 eventObserver 示例 onchange 方法会多次调用
- input文本框没有onchange事件,可以通过下面两种方法实现当input内容改变时触发事件
- UITextField实现UITextView监控值变化的功能textViewDidChange
- checkbox无法立即实现onchange的两种替代方法(onchange和onpropertychange的区别)
- 自定义标签select的实现 包括属性name、id、onchange
- How to capture video frames from the camera as images using AV Foundation on iOS
- havlenapetr-FFMpeg OnVideoSizeChangedListener接口的实现
- havlenapetr-FFMpeg OnVideoSizeChangedListener接口的实现
- 单选按钮RadioGroup、复选框CheckBox的OnCheckedChangeListener事件的实现方法
- 不使用定时器实现的onhashchange
- location的hash部分和使用window.onhashchange实现ajax请求内容时使用浏览器后退和前进功能
- 使用 ContentObserver 监听短信接收 onChange 方法调用两次
- 时时监控input值变化 oninput & onpropertychange
- FindFirstChangeNotification FindNextChangeNotification实现应用层文件监控的代码分析