Android怎么调用手机摄像头拍照和录音功能
发表于:2024-10-16 作者:千家信息网编辑
千家信息网最后更新 2024年10月16日,本文小编为大家详细介绍"Android怎么调用手机摄像头拍照和录音功能",内容详细,步骤清晰,细节处理妥当,希望这篇"Android怎么调用手机摄像头拍照和录音功能"文章能帮助大家解决疑惑,下面跟着小
千家信息网最后更新 2024年10月16日Android怎么调用手机摄像头拍照和录音功能
本文小编为大家详细介绍"Android怎么调用手机摄像头拍照和录音功能",内容详细,步骤清晰,细节处理妥当,希望这篇"Android怎么调用手机摄像头拍照和录音功能"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
调用摄像头拍照:
public class MainActivity extends Activity { private Button button; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView= (ImageView) findViewById(R.id.imageView); button= (Button) findViewById(R.id.btn); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent,1); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode==RESULT_OK){ Bundle bundle=data.getExtras(); Bitmap bitmap= (Bitmap) bundle.get("data"); if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ File file=new File(Environment.getExternalStorageDirectory(),"MyImage"); if(!file.exists()){ file.mkdir(); } try { String date=new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()); String path=file+"/"+date+".jpg"; FileOutputStream outputStream=new FileOutputStream(path); bitmap.compress(Bitmap.CompressFormat.JPEG,100,outputStream); } catch (FileNotFoundException e) { e.printStackTrace(); } } imageView.setImageBitmap(bitmap); } }}
布局文件
调用录音功能:
public class Main2Activity extends Activity implements View.OnClickListener,AdapterView.OnItemClickListener{ private ListView listView;//录音文件控件 private Button btn1,btn2;//开始按钮和停止按钮 private MediaRecorder recorder;//录音对象 private Listlist=new ArrayList<>();//录音文件数据源 private File path,recorderFile;//根目录,要存入sd卡的录音文件 private ArrayAdapter adapter;//适配器 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); init(); if(null!=path){ musicList(); } } //初始化时获得所有录音文件 private void musicList() { File home=path; //判断文件过滤器的长度是否大于0,大于则适配到listview上,小于则不设置上去 if(home.listFiles(new MusicFilter()).length>0){ for(File file:home.listFiles(new MusicFilter())){ list.add(file.getName()); } adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,list); listView.setAdapter(adapter); } } private void init() { listView= (ListView) findViewById(R.id.listView); listView.setOnItemClickListener(this); btn1= (Button) findViewById(R.id.start); btn2= (Button) findViewById(R.id.stop); btn1.setOnClickListener(this); btn2.setOnClickListener(this); path=getPath();//获得根目录 } private File getPath() { File file=null; //判断sd卡状态 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ file=Environment.getExternalStorageDirectory(); }else{ Toast.makeText(this,"没有SD卡",Toast.LENGTH_SHORT).show(); } return file; } @Override public void onClick(View view) { switch (view.getId()){ //开始按钮 case R.id.start: startRecorder(); btn1.setEnabled(false); btn2.setEnabled(true); break; //停止按钮 case R.id.stop: stopRecorder(); btn1.setEnabled(true); btn2.setEnabled(false); break; } } private void stopRecorder() { //如果录音的文件不为null if(recorderFile!=null){ //停止录音 recorder.stop(); //把录音文件的名字加入集合里 list.add(recorderFile.getName()); if(adapter!=null){ //刷新适配器 adapter.notifyDataSetChanged(); } //释放录音对象 recorder.release(); recorder=null; } } private void startRecorder() { //创建录音对象 recorder=new MediaRecorder(); //设置麦克风 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //设置转码类型 recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //设置编码方式 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); try { //创建录音文件 recorderFile=File.createTempFile("录音_",".amr",path); //设置录音的数据写到录音文件里 recorder.setOutputFile(recorderFile.getAbsolutePath()); //录音准备 recorder.prepare(); //录音开始 recorder.start(); } catch (IOException e) { e.printStackTrace(); } } @Override public void onItemClick(AdapterView> adapterView, View view, int i, long l) { //获得点击条目的路径 File file=new File(path.getAbsolutePath()+File.separator+list.get(i)); playMusic(file); } //调用播放器播放点击的条目文件 private void playMusic(File file) { Intent intent = new Intent(Intent.ACTION_VIEW); Uri uri = Uri.fromFile(file); intent.setDataAndType(uri, "audio/mp3"); startActivity(intent); }}
文件过滤代码:
public class MusicFilter implements FilenameFilter { @Override public boolean accept(File file, String name) { return (name.endsWith(".amr")); }}
布局文件:
读到这里,这篇"Android怎么调用手机摄像头拍照和录音功能"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
文件
功能
摄像头
摄像
按钮
手机
对象
文章
适配
内容
布局
数据
条目
根目录
适配器
妥当
代码
名字
思路
控件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
木马c2服务器
适合决策树的数据库
android数据库中文
服务器内存很高
昌平区口碑好的软件开发不二之选
软件开发与销售产业链
汽车服务器数据异常怎么解决
雅昌艺术图书数据库用户名密码
网络安全考试问答题必备
山东科奥互联网科技有限公司官网
查看hp服务器的阵列配置
60年代 魔兽 最好的服务器
加强中学生网络安全
上海瑞庭网络技术武汉
武汉 hp服务器
网络安全工作 细则
把数据库表结构导入文件
网络安全实验教程
网络安全内容黑板报
计算机网络技术王协瑞题库
政务外网网络安全管理办法
网络安全信息化试点城市
崇明区网络技术多少钱
双合软件开发公司电话
云服务器安全解决方案
数据库多个文件怎么发送
米兔微信加好友服务器繁忙
网络技术应该具备的职业道德
上海大学有网络安全专业的
无盘电脑服务器要求高不