-
接三 3)為了解決“onActivityResult里面獲取回來的是圖片實際上是縮略圖”的問題,設(shè)置拍照文件存儲路徑,然后從自己存儲的路徑來取得照片。注意:Uri是android.net而不是Java.net mFilePath = Environment.getExternalStorageDirectory().getPath();//獲取系統(tǒng)SD卡路徑 mFilePath = mFilePath + "/"+"temp.png"; //mFilePath為SD卡路徑+我們自定義的文件名 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Uri uri = Uri.fromFile(new File(pathFile)); //將Uri指向創(chuàng)建的文件對象 intent.putExtra(MediaStore.EXTRA_OUTPUT,uri); //更改拍照文件存儲路徑 startActivityForResult(intent, CAREMA_REQUEST_CODE_2); 在onActivityResult中添加 if (requestCode == CAMERA_REQUEST_CODE){ *** }else if(requestCode == CAMERA_REQUEST_CODE_2){ //從自己存儲的路徑來取得照片 FileInputStream files = new FileInputStream(mFilePath); Bitmap bitmap = BitmapFactory.decodeStream(files); //通過BitmapFactory.decodeStream方法將文件輸入流解析成Bitmap mImageView.setImageBitmap(bitmap); } 注意: 1)關(guān)閉流對象 files.close(); 2)文件操作基本都需要捕獲異常 3)增加SD卡讀寫權(quán)限查看全部
-
三、調(diào)用系統(tǒng)相機,獲取拍攝圖片顯示在imageView中 1)使用startActivityForResult() 2)覆寫onActivityResult函數(shù),處理返回來的數(shù)據(jù) @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK){ if (requestCode == CAMERA_REQUEST_CODE){ Bundle bundle = data.getExtras();//取出相機返回的所有信息,即圖片的二進制流 Bitmap bitmap = (Bitmap) bundle.get("data"); //轉(zhuǎn)換成bitmap mImageView.setImageBitmap(bitmap); } } } 注意:onActivityResult里面獲取回來的是圖片實際上是縮略圖查看全部
-
二、接著一 public void startCamera(View view){ if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED){ //申請權(quán)限 ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA},CAMERA_REQUEST_CODE); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == CAMERA_REQUEST_CODE){ if (grantResults[0] == PackageManager.PERMISSION_GRANTED){ //權(quán)限通過 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivity(intent); }else { Toast.makeText(this, "Permission issue", Toast.LENGTH_SHORT).show(); } } } Manifest文件中加入: <uses-permission android:name="android.permission.CAMERA"/>查看全部
-
一、調(diào)用系統(tǒng)相機 使用隱式Intent來啟動系統(tǒng)camera Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivity(intent); 使自己的應(yīng)用也可以接收啟用相機功能 在本應(yīng)用的activity中添加如下intent-filter <intent-filter> <action android:name="android.media.action.IMAGE_CAPTURE"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> 這樣自己的應(yīng)用就具有了系統(tǒng)相機同樣的功能。和系統(tǒng)應(yīng)用一樣都可以收到啟動相機功能的intent 注意:使用新的app想調(diào)用相機功能時,android 6.0版本不僅需要在代碼中做運行時權(quán)限處理,而且在Manifest文件中同樣需要加入權(quán)限申請,查看全部
-
通過本課可以學(xué)到: 1.Android系統(tǒng)相機的調(diào)用(Intent) 2.自定義Android相機 3.學(xué)習(xí)自定義控件的使用 在App中使用Camera的兩種方式: 1)調(diào)用系統(tǒng)相機、或者是具有相機功能的應(yīng)用 2)自定義相機查看全部
-
相機查看全部
-
阿薩德查看全部
-
Camera在App中使用的兩種方式i查看全部
-
調(diào)用相機,展示照片查看全部
-
原圖查看全部
-
啟動相機查看全部
-
應(yīng)用具有系統(tǒng)相機功能查看全部
-
應(yīng)用具有系統(tǒng)相機同樣功能查看全部
-
Camera 調(diào)用系統(tǒng)相機 1使用系統(tǒng)Intent ACTION_IMAGE-CAPTURE查看全部
-
龍查看全部
舉報
0/150
提交
取消