-
接三 3)為了解決“onActivityResult里面獲取回來的是圖片實際上是縮略圖”的問題,設置拍照文件存儲路徑,然后從自己存儲的路徑來取得照片。注意:Uri是android.net而不是Java.net mFilePath = Environment.getExternalStorageDirectory().getPath();//獲取系統SD卡路徑 mFilePath = mFilePath + "/"+"temp.png"; //mFilePath為SD卡路徑+我們自定義的文件名 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Uri uri = Uri.fromFile(new File(pathFile)); //將Uri指向創建的文件對象 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)關閉流對象 files.close(); 2)文件操作基本都需要捕獲異常 3)增加SD卡讀寫權限查看全部
-
三、調用系統相機,獲取拍攝圖片顯示在imageView中 1)使用startActivityForResult() 2)覆寫onActivityResult函數,處理返回來的數據 @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"); //轉換成bitmap mImageView.setImageBitmap(bitmap); } } } 注意:onActivityResult里面獲取回來的是圖片實際上是縮略圖查看全部
-
二、接著一 public void startCamera(View view){ if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED){ //申請權限 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){ //權限通過 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"/>查看全部
-
一、調用系統相機 使用隱式Intent來啟動系統camera Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivity(intent); 使自己的應用也可以接收啟用相機功能 在本應用的activity中添加如下intent-filter <intent-filter> <action android:name="android.media.action.IMAGE_CAPTURE"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> 這樣自己的應用就具有了系統相機同樣的功能。和系統應用一樣都可以收到啟動相機功能的intent 注意:使用新的app想調用相機功能時,android 6.0版本不僅需要在代碼中做運行時權限處理,而且在Manifest文件中同樣需要加入權限申請,查看全部
-
通過本課可以學到: 1.Android系統相機的調用(Intent) 2.自定義Android相機 3.學習自定義控件的使用 在App中使用Camera的兩種方式: 1)調用系統相機、或者是具有相機功能的應用 2)自定義相機查看全部
-
相機查看全部
-
阿薩德查看全部
-
Camera在App中使用的兩種方式i查看全部
-
調用相機,展示照片查看全部
-
原圖查看全部
-
啟動相機查看全部
-
應用具有系統相機功能查看全部
-
應用具有系統相機同樣功能查看全部
-
Camera 調用系統相機 1使用系統Intent ACTION_IMAGE-CAPTURE查看全部
-
龍查看全部
舉報
0/150
提交
取消