Android基础_相机 图库 infaceview(十)
来源:互联网 发布:淘宝兼职可信不 编辑:程序博客网 时间:2024/05/23 12:34
简易MP3播放器
public class MainActivity extends Activity implements OnSeekBarChangeListener, OnTouchListener { private SurfaceView mSV; private MediaPlayer mMediaPlayer; private SeekBar mSb; /* 1.获取SurfaceView * 2.创建一个MediaPlayer(); * 3.mMedia.setDataSource(path); * 4.mm.setDisplay(holder); * holder/sv.getHolder(); * 控制器,真正实现控制界面的 * 5.mm.prepare(); * 6.mm.start(); * 7.让SeekBar每500毫秒刷新 * 1.new Timer(new task,when,period); * 2.设置seekbar最大值为音频的长度 * sb.setMax(media.getduaration()); * 3.进度对齐 * 自带ui线程操作,不必返回主线程 * mSb.setProgress(mMediaPlayer.getCurrentPosition()); * 8.视频的跳闸un * mMediaPlayer.seekTo(mSb.getProgress()); * * */ /*surfaceview的优点 * 1.双缓冲,不会一会儿下载一会播放;边下载边解码边播放,不仅仅是用来播放视频,也可以用来做游戏 * 2.传统的会在下载后才播放 * */ /* 1.创建media * 2.media.setDataSource(getabsolutedpath,"x.xx"); * 3.sv.getholder(); * holder.addcallback(new callback(){ * 1.mMediaPlayer.setDisplay(holder); * 2.media.prepare(); * 3.media.start(); * }); * */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); mSV = (SurfaceView)findViewById(R.id.sv); mSV.setOnTouchListener(this); mSb = (SeekBar)findViewById(R.id.sb); mSb.setOnSeekBarChangeListener(this); mSb.setVisibility(View.GONE); SurfaceHolder holder = mSV.getHolder(); holder.addCallback(new Callback() { @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { try { mMediaPlayer = new MediaPlayer(); mMediaPlayer.setDataSource(getMp3FilePath()); mMediaPlayer.setDisplay(holder); mMediaPlayer.prepare(); mMediaPlayer.start(); mSb.setMax(mMediaPlayer.getDuration()); new Timer().schedule(new TimerTask() { @Override public void run() { mSb.setProgress(mMediaPlayer.getCurrentPosition()); } }, 500, 500); } catch (Exception e) { } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } }); } private String getMp3FilePath(){ File file = new File(getFilesDir(),"oppo.3gp"); return file.getAbsolutePath(); } public void play(View v){ } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onStopTrackingTouch(SeekBar seekBar) { mMediaPlayer.seekTo(mSb.getProgress()); } /* 1.设置进度条可见 * 2.三秒后消失 * */ @Override public boolean onTouch(View v, MotionEvent event) { mSb.setVisibility(View.VISIBLE); new Timer().schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { public void run() { mSb.setVisibility(View.GONE); } }); } }, 3000); return false; }}
使用本地相机进行拍照
public class MainActivity extends Activity { private ImageView mIv; private int TakePhotoCode=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mIv=(ImageView) findViewById(R.id.iv); } /*需求:拍照 * 1.启动系统的拍照界面 * new Intent(android.provider.mediastore.action.ACTION_IMAGE_ACPTURE); * 2.在onactivityResult中 * 1.判断请求吗 * 2.判断返回码 * 3.获取Bundle对象 * data.getExtras(); * 4.获取bundle中对象的数据 * 1.实现serializable的对象(java定义的) * 2.实现parcelable的对象(android定义的) * 1.bundle.getParcelable("data"); * 2.并将其转换为bitmap * */ public void takephoto(View v){ Log.v("meeeeeee", "开始拍照"); Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, TakePhotoCode); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode==TakePhotoCode) { if (resultCode==RESULT_OK) { Bundle bundle = data.getExtras(); Bitmap photo= bundle.getParcelable("data"); mIv.setImageBitmap(photo); } else if (resultCode==RESULT_CANCELED) { Log.v("meeeeeee", "点击返回"); } } }}
保存照片至本地
/*需求:拍照 * 1.创建一个空白图片 * new File(getFileDir(),"xx.jpp"); * file.createNewFile(); * 2.启动系统的拍照界面 * 1.Intent/new Intent(android.provider.mediastore,ACTION_IMAGE_CAPTURE); * 2.intent.putExtra(MediaStore.EXTRA_OUTPUT,uri); * Uri/Uri.from(tempImageFile) * File tempImageFile = getTempImageFile(); * 3.startActivityForResult * */ File file; public void takephoto(View v) { String state = Environment.getExternalStorageState(); if (!state.equals(Environment.MEDIA_MOUNTED)) { Toast.makeText(MainActivity.this, "没找到sd卡", 0).show(); }else { SimpleDateFormat formatter = new SimpleDateFormat ("yyyy年MM月dd日 HH:mm:ss"); Date curDate = new Date(System.currentTimeMillis());//获取当前时间 String str = formatter.format(curDate); file = new File(Environment.getExternalStorageDirectory(), str+".jpg"); if (!file.exists()) { try { file.createNewFile(); } catch (IOException e) { } } Intent intent = new Intent( android.provider.MediaStore.ACTION_IMAGE_CAPTURE); Uri uri = Uri.fromFile(file); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivityForResult(intent, TakePhotoCode); } } /*拍照成功后的处理操作 * 1.显示图片 * */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode==TakePhotoCode) { if (resultCode==RESULT_OK) { Bitmap bmp = BitmapFactory.decodeFile(file.getAbsolutePath()); mIv.setImageBitmap(bmp); Toast.makeText(MainActivity.this, "已保存至:"+file.getAbsolutePath(), 0).show(); return; } else if (resultCode==RESULT_CANCELED) { Log.v("meeeeeee", "点击返回"); } } } /*判断sd卡是否存在 * 1.获取sd卡状态 * 2.判断状态 * 3.赋予sd卡读取权限READ_EXTRANAL_STORAGE * 赋予sd卡读取权限WRITE_EXTRANAL_STORAGE * */ /*创建SD卡文件 * 1.new File(environment.getexternalStorageDirectory()); * file.exisets() * 2.file.createnewFile(); * */ public boolean judgeSDCardExist(){ String state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED)) { return true; } return false; }
简单的格式化
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy年MM月dd日 HH:mm:ss"); Date curDate = new Date(System.currentTimeMillis());//获取当前时间 String str = formatter.format(curDate);
打开本地相册
/*相册功能 * 1.创建一个带有action的Intent * new intent(intent.action_pick) * 2.设置intent的数据和类型 * intetn.setdataandtype(data,mime); * 1.目标数据 * 2.mimetype * */ public void photos(View v){ Intent intent = new Intent(Intent.ACTION_PICK); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(intent, GET_PHOTOS); /*从文件夹中检索图片的 * 1.Intent intent = new Intent(Intent.ACTION_PICK); * 2.intent.setType("image/*"); * 3.startActivityForResult(intent,ACTION_PICK_IMAGE); * */ } /** * 3.获取目标的data的uri对象 * Uri/data.getData(); * */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == GET_PHOTOS && resultCode == RESULT_OK) { Uri uri = data.getData(); if (uri != null) { // 该图片的类型不是该操作产生的图片 try { Bitmap bmp = Media.getBitmap(getContentResolver(), uri); mIv.setImageBitmap(bmp); } catch (Exception e) { Toast.makeText(MainActivity.this, "有异常", 0).show(); } } else { // 该图片的类型是该操作产生的图片 Bundle bundle = data.getExtras(); if (bundle != null) { Bitmap bmp = bundle.getParcelable("data"); mIv.setImageBitmap(bmp); } } } }
阅读全文
0 0
- Android基础_相机 图库 infaceview(十)
- Android 调用相机或图库,裁剪图片
- android 相机图库调用以及裁剪
- Android调用系统相机与图库
- android头像上传(图库和相机)
- Android调用系统相机和图库
- android 相机与图库的简单应用
- React Native调用Android相机图库
- React Native调用Android相机图库
- Android开发之调用系统图库及相机
- android 调用系统相机和图库 实例详解
- Android调用系统的相机,图库,以及裁剪图片功能。
- Android 调用相机与图库的简单封装
- Android 头像上传 相机+图库 绘制圆形头像
- Android 打开相机和图库获取图片并裁剪
- 调用Android的相机与图库并进行剪切
- 调用Android中相机或图库选择图片并剪切
- android 调用系统图库和相机设置头像
- Echarts柱状图实现
- 实现购物车 全选全不选,反选,单选-选满时同步全选复选框--复选框checked属性取值问题已解决
- 配置tomcat服务器内存大小中的Xms、Xmx、PermSize、MaxPermSize 详解
- CSDN-markdown编辑器的使用
- Android使用EditText输入浮点型数字设置第一位不能输入小数点并且保留两位小数
- Android基础_相机 图库 infaceview(十)
- 内存泄露、内存溢出
- mysql复制数据库的恢复
- 斐讯K2路由编译Padavan华硕固件和心得
- 进程间通信
- 第十八篇:JAVA之泛型
- 20170807-20170813C#工作学习周总结
- JVM调优---常用JVM配置参数
- 2018网易内推编程题 疯狂队列