您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“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); } } }
布局文件
<?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>
讀到這里,這篇“Android怎么調用手機攝像頭拍照和錄音功能”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。