質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

2616閲覧

androidアプリで外部のカメラアプリで撮影した画像を取得したいです。

hkCgIVNAqvin1AQ

総合スコア14

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/12/21 09:22

###前提・実現したいこと
ここに質問したいことを詳細に書いてください
androidアプリで外部のカメラアプリで撮影した画像を取得したいです。

###発生している問題・エラーメッセージ
外部のカメラアプリで撮影した画像を取得できない。

intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, m_uri);
でm_uriがnullになる。
シャッターは動く。

エラーメッセージ ```思うように動かない ###該当のソースコード ```ここに言語を入力 ここにご自身が実行したソースコードを書いてください

private void pickImage(){
//カメラの起動用のIntentの生成
String photoName = System.currentTimeMillis() + ".jpg";
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Images.Media.TITLE, photoName);
contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
m_uri = getContentResolver()
.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
Intent intentCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, m_uri);

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
カメラアプリを呼び出す前に、イメージボタンをタップするのですが
その際には、content://media/external/images/media/355995
のようにm_uriに値が入ってきます。
startActivityForResultにきて、カメラアプリを選択し、
写真を撮影すると、onActivityResultの引数のIntent dataはnullとなります。

プログラムの全体をもう少し詳しくお示しします。
ご教授よろしくお願いします。


public void onPicButtonTapped(View view){
//パーミッションが許可されているかを判定する
if(ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED){

}else{ //許可されている場合は、pickImageメソッドを呼び出す // インテントを用いて端末に //保存されている画像を取得する処理を行う pickImage(); } } //インテントを用いてカメラ及び端末に保存されている画像を取得するメソッド private void pickImage(){ //カメラの起動用のIntentの生成 String photoName = System.currentTimeMillis() + ".jpg"; ContentValues contentValues = new ContentValues(); contentValues.put(MediaStore.Images.Media.TITLE, photoName); contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); m_uri = getContentResolver() .insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues); Intent intentCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, m_uri); //ギャラリー用のIntentの生成 Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); //インテントにMIMEタイプを設定する intent.setType("image/*"); // ギャラリー選択のIntent(二つのIntentを一つにまとめたモノ)でcreateChooser() Intent chooserIntent = Intent.createChooser(intent, getString(R.string.pick_image)); // EXTRA_INITIAL_INTENTS にカメラ撮影のIntentを追加 chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {intentCamera}); //画像を選択可能なアプリを起動し、そこで選択した画像を //onActivityResultで受け取る startActivityForResult(chooserIntent.createChooser(chooserIntent, getString(R.string.pick_image)), REQUEST_CODE); } //呼び出し先のアクティビティが終了した時に呼ばれる @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //画像を選択可能なアプリから戻ってきたかの判定を行う if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { //画像を選択可能なアプリから戻ってきた場合は、 Uri uri = (data == null) ? null : data.getData(); //画像が選択されたかの判定 if (uri != null) { try { //Bitmap形式の判定 Bitmap image = MyUtils.getImageFromStream( getContentResolver(), uri); RegistrationActivity.this.image = image; //ImageButtonに画像を設定 ImageButton mDiaryButton= (ImageButton) findViewById(R.id.diary_photo); mDiaryButton.setImageBitmap(image); } catch (IOException e) { e.printStackTrace(); } } } }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

外部カメラの実装次第ではnullになるので対処のしようはありません。
フィールド変数に保存しておいて、その値を使用しましょう。

投稿2017/12/21 14:54

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hkCgIVNAqvin1AQ

2017/12/21 15:11

ご回答ありがとうございます。 具体的には、フィールド変数に何を保存しておくのでしょうか 先ほど、this.m_uri = getContentResolver()として intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, this.m_uri); としましたが、ダメでした。
yona

2017/12/21 16:28

外部カメラの実装次第で、onActivityResultのdataにuriの情報が含まれないということです。 dataの値を当てにせず、フィールド変数m_uriの値で画像を取得してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問