实例介绍
【实例简介】
拍照摄像2合一,可以回看最新的照片和视频
【实例截图】
【核心代码】
package com.otk.camera; import java.io.File; import java.util.Timer; import java.util.TimerTask; import com.otk.camera.MyVPView.OnRecordFinishListener; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; public class MainActivity extends Activity { private ImageButton ib_change,ib_work; private Button btn_view; private MyVPView mysf; private ImageView iv_live; private TextView tv_mm,tv_maohao,tv_ss; private boolean live=false,flag=true;//flag=true为拍照,false为摄像 private Timer mTimer; private int timeCount; private long number=0; private Handler handler; private String path_photo="",path_video=""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ib_change=(ImageButton) findViewById(R.id.ib_change); ib_work=(ImageButton) findViewById(R.id.ib_work); mysf=(MyVPView) findViewById(R.id.mysurfaceview); iv_live=(ImageView) findViewById(R.id.live); tv_mm=(TextView) findViewById(R.id.tv_time_mm); tv_maohao=(TextView) findViewById(R.id.tv_time_maohao); tv_ss=(TextView) findViewById(R.id.tv_time_ss); btn_view=(Button) findViewById(R.id.btn_view); findimage(); handler=new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case 0: int ss=msg.arg1%60; int mm=msg.arg1/60; if(mm>=10){ tv_mm.setText("" mm); }else{ tv_mm.setText("0" mm); } if(ss>=10){ tv_ss.setText("" ss); }else{ tv_ss.setText("0" ss); } break; default: break; } }; }; } public void onClick(View view){ switch (view.getId()) { case R.id.ib_change: flag=!flag; if(flag){ ib_work.setBackgroundResource(R.drawable.pai); findimage(); }else{ ib_work.setBackgroundResource(R.drawable.start); findmp4(); } break; case R.id.ib_work: if(flag){ mysf.takePhoto(); }else{ if(!live){ ib_change.setEnabled(false); mysf.record(new OnRecordFinishListener() { @Override public void onRecordFinish() { // TODO Auto-generated method stub timeCount=-1; iv_live.setVisibility(View.VISIBLE); tv_maohao.setVisibility(View.VISIBLE); mTimer=new Timer(); mTimer.schedule(new TimerTask() { @Override public void run() { // TODO Auto-generated method stub timeCount ; Message msg=new Message(); msg.what=0; msg.arg1=timeCount; handler.sendMessage(msg); } }, 0,1000); ib_work.setBackgroundResource(R.drawable.stop); live=true; } }); }else{ ib_change.setEnabled(true); mTimer.cancel(); iv_live.setVisibility(View.INVISIBLE); tv_maohao.setVisibility(View.INVISIBLE); tv_mm.setText(""); tv_ss.setText(""); mysf.stop(); ib_work.setBackgroundResource(R.drawable.start); findmp4(); live=false; } } break; case R.id.btn_view: if(flag){ Intent intent1=new Intent(Intent.ACTION_VIEW); findimage(); intent1.setDataAndType(Uri.fromFile(new File(path_photo)), "image/*"); startActivity(intent1); }else{ Intent intent2=new Intent(Intent.ACTION_VIEW); findmp4(); intent2.setDataAndType(Uri.fromFile(new File(path_video)), "video/mp4"); startActivity(intent2); } break; default: break; } } private void findmp4(){ File Dir = new File(Environment.getExternalStorageDirectory() File.separator "MyVideo"); if (!Dir.exists()) { Dir.mkdirs(); } File[] files=Dir.listFiles(); if(files.length>0){ path_video=files[0].getAbsolutePath(); String s1=files[0].getName().substring(0, files[0].getName().lastIndexOf(".")); number=Long.valueOf(s1); for (File file : files) { String s2=file.getName().substring(0, file.getName().lastIndexOf(".")); long n=Long.valueOf(s2); if(n>number){ number=n; path_video=file.getAbsolutePath(); } } } if(path_video.equals("")){ btn_view.setEnabled(false); }else{ btn_view.setEnabled(true); } } private void findimage(){ File Dir = new File(Environment.getExternalStorageDirectory() File.separator "MyPhoto"); if (!Dir.exists()) { Dir.mkdirs(); } File[] files=Dir.listFiles(); if(files.length>0){ path_photo=files[0].getAbsolutePath(); String s1=files[0].getName().substring(0, files[0].getName().lastIndexOf(".")); number=Long.valueOf(s1); for (File file : files) { String s2=file.getName().substring(0, file.getName().lastIndexOf(".")); long n=Long.valueOf(s2); if(n>number){ number=n; path_photo=file.getAbsolutePath(); } } } if(path_photo.equals("")){ btn_view.setEnabled(false); }else{ btn_view.setEnabled(true); } } // public Bitmap getVideoThumbnail(ContentResolver cr, String path) { // Bitmap bitmap = null; // BitmapFactory.Options options = new BitmapFactory.Options(); // options.inDither = false; // options.inPreferredConfig = Bitmap.Config.RGB_565; // //select condition. // String whereClause = MediaStore.Video.Media.DATA " = '" // path "'"; // //colection of results. // Cursor cursor = cr.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, // new String[] { MediaStore.Video.Media._ID }, whereClause, // null, null); // if (cursor == null || cursor.getCount() == 0) { // return ThumbnailUtils.createVideoThumbnail(path, MediaStore.Video.Thumbnails.MINI_KIND); // } // cursor.moveToFirst(); // //image id in image table. // String videoId = cursor.getString(cursor // .getColumnIndex(MediaStore.Video.Media._ID)); // if (videoId == null) { // return ThumbnailUtils.createVideoThumbnail(path, MediaStore.Video.Thumbnails.MINI_KIND); // } // cursor.close(); // long videoIdLong = Long.parseLong(videoId); // //via imageid get the bimap type thumbnail in thumbnail table. // bitmap = MediaStore.Video.Thumbnails.getThumbnail(cr, videoIdLong, // Images.Thumbnails.MICRO_KIND, options); // return bitmap; // } }
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论