<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了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); } } }
佈局檔案
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:gravity="center" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> <ImageView android:id="@+id/imageView" android:layout_width="200dp" android:layout_height="200dp" /> </LinearLayout>
呼叫錄音功能:
public class Main2Activity extends Activity implements View.OnClickListener,AdapterView.OnItemClickListener{ private ListView listView;//錄音檔案控制元件 private Button btn1,btn2;//開始按鈕和停止按鈕 private MediaRecorder recorder;//錄音物件 private List<String> list=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")); } }
佈局檔案:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/start" android:text="開始錄音" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/stop" android:text="停止錄音" android:layout_width="match_parent" android:layout_height="wrap_content" /> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"></ListView> </LinearLayout>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45