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

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

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

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

Android

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

Android Studio

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

解決済

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

hkCgIVNAqvin1AQ
hkCgIVNAqvin1AQ

総合スコア14

Java

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

Android

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

Android Studio

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

1回答

0評価

0クリップ

2297閲覧

投稿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(); } } } }

}

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

Android

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

Android Studio

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