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

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

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

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

Android

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

2342閲覧

android カメラで撮った画像をサーバに送ろうとした際に起こったエラー

watanuki

総合スコア11

Java

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

Android

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/02/09 07:04

編集2017/02/09 16:55

###前提・実現したいこと
android studioを使用してandroid内蔵のカメラで撮影した写真をサーバーのディレクトリに送ろうとした時に以下のエラーメッセージが発生しました。(アプリは起動するのですが画像を送る場面で「問題が発生したため、QRCameraを終了します」と表示されます。)

追伸
URIにPATHをつけるにはどうすればいいのでしょうか。
数年前から使用がかわったみたいでURIにPATHがないみたいなのですが

###発生している問題・エラーメッセージ

###該当のソースコード

Java

1CameraActivity.java 2 3 4public class CameraActivity extends Activity { 5 67 8TakeButton = (Button) findViewById(R.id.take_button); 9TakeButton.setOnClickListener(new View.OnClickListener() { 10public void onClick(View view) { 11String filename = System.currentTimeMillis() + ".jpg"; 12 13ContentValues values = new ContentValues(); 14values.put(MediaStore.Images.Media.TITLE, filename); 15values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); 16mImageUri = getContentResolver().insert( 17MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 18 19Intent intent = new Intent(); 20intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); 21intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); 22startActivityForResult(intent, 2); 23 24} 25}); 26} 27 28@Override 29protected void onActivityResult(int requestCode, int resultCode, Intent data) { 30if (requestCode == 2) { 31 32//UriからFileへ変換 ここでPATHがとれません 33String path = mImageUri.getPath(); 34File file = new File(path); 35 36//ポスト先のURL 37String url = ここはURLを記入しています; 38 39//ここでPOSTする内容を設定 "image/jpg"の部分は送りたいファイルの形式に合わせて変更する 40RequestBody requestBody = new MultipartBody.Builder() 41.setType(MultipartBody.FORM) 42.addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse("image/jpg"), file)) 43.build(); 44 45OkHttpClient client = new OkHttpClient(); 46 47Request request = new Request.Builder() 48.url(url) 49.post(requestBody) 50.build(); 51 52String result = ""; 53try { 54Response response = client.newCall(request).execute(); 55if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); 56{ 57result = response.body().string(); 58} 59} catch (Exception e) { 60} 61 62//return result: 63} 64} 65} 66 67 68追伸用 69 String scheme = mImageUri.getScheme(); 70 String path = ""; 71 if ("file".equals(scheme)) { 72 path = mImageUri.getPath(); 73 } else if("content".equals(scheme)) { 74 ContentResolver contentResolver = getApplicationContext().getContentResolver(); 75 Cursor cursor = contentResolver.query(mImageUri, new String[] { MediaStore.MediaColumns.DATA }, null, null, null); 76 if (cursor != null) { 77 cursor.moveToFirst(); 78 path = cursor.getString(0); 79 cursor.close(); 80 } 81 }

###試したこと
追伸用はネットに書いてあったほうほうではPATHを作ろうとしたのですが、今度はscheamの部分でエラーが出ます。
どうかよろしくお願いします

###補足情報(言語/FW/ツール等のバージョンなど)
この部分で使用したjarファイル:okhttp-3.6.0.jar

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

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

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

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

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

guest

回答1

0

なにが問題になっているかを調べるためにonActivityResultの中をコメントアウトして実行してください。

また、以前の質問と同じ内容を再度投稿した理由はなんですか?

投稿2017/02/09 07:15

yona

総合スコア18155

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

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

watanuki

2017/02/09 07:44

時間がなかったので横着してしまいました。すみませんでした。一度投稿したものは自由に削除できないのですね。もう一つの方を削除できないか問い合わせてみます。 onActivityResultの中をコメントアウトして実行してみたのですが、「問題が発生したため、QRCameraを終了します」は表示されませんでしたが、android monitorに 02-09 07:33:54.937 7401-7401/com.example.qrcamera E/libEGL: call to OpenGL ES API with no current context (logged once per thread) が表示されました。
yona

2017/02/09 07:50

そのメッセージはとりあえず置いといてください。 次はRequestBodyをbuildしている箇所のコメントアウトを外して実行してください。
watanuki

2017/02/09 08:06 編集

RequestBody requestBody = new MultipartBody.Builder() から catch (Exception e) { }の部分をコメントアウトしました。あっていますでしょうか。 「問題が発生したため、QRCameraを終了します」が表示されました。その時のエラーはこれです。 .109 29642-29642/com.example.qrcamera E/libEGL: call to OpenGL ES API with no current context (logged once per thread) 02-09 07:55:09.164 29642-29642/com.example.qrcamera E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to resume activity {com.example.qrcamera/com.example.qrcamera.CameraActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=null} to activity {com.example.qrcamera/com.example.qrcamera.CameraActivity}: java.lang.NullPointerException at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986) at android.app.ActivityThread.access$600(ActivityThread.java:123) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4424) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=null} to activity {com.example.menken.qrcamera/com.example.menken.qrcamera.CameraActivity}: java.lang.NullPointerException at android.app.ActivityThread.deliverResults(ActivityThread.java:2980) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2431) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986)  at android.app.ActivityThread.access$600(ActivityThread.java:123)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)  at android.os.Handler.dispatchMessage(Handler.java:99)  at android.os.Looper.loop(Looper.java:137)  at android.app.ActivityThread.main(ActivityThread.java:4424)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:511)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)  at dalvik.system.NativeStart.main(Native Method)  Caused by: java.lang.NullPointerException at com.example.qrcamera.CameraActivity.onActivityResult(CameraActivity.java:118) at android.app.Activity.dispatchActivityResult(Activity.java:4649) at android.app.ActivityThread.deliverResults(ActivityThread.java:2976) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2431)  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986)  at android.app.ActivityThread.access$600(ActivityThread.java:123)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)  at android.os.Handler.dispatchMessage(Handler.java:99)  at android.os.Looper.loop(Looper.java:137)  at android.app.ActivityThread.main(ActivityThread.java:4424)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:511)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)  at dalvik.system.NativeStart.main(Native Method) 
yona

2017/02/09 08:05

ではmImageUriがnullかどうかをチェックしてください。
watanuki

2017/02/09 08:12

if(mImageUri == null){ Intent intent = new Intent(getApplication(), QRActivity.class); startActivity(intent); } として実行を行うとQRActivityに戻ったのでNullでした。 カメラで撮影した画像がうまく送れてないのでしょうか
yona

2017/02/09 08:18

mImageUriが何かは知りませんが、おそらくフィールド変数なので、カメラの撮影のせいではなく、あなたのミスです。
watanuki

2017/02/09 08:23

mImageUriはソースコードにあるカメラで撮影した画像を格納?しているつもりのものです。 TakeButton = (Button) findViewById(R.id.take_button); TakeButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { String filename = System.currentTimeMillis() + ".jpg"; ContentValues values = new ContentValues(); values.put(MediaStore.Images.Media.TITLE, filename); values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); mImageUri = getContentResolver().insert( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); startActivityForResult(intent, 2); の部分です。 ここからmImageUriを送っているのですが
yona

2017/02/09 08:31

設定しているつもりなのはわかりました、実際はどうなのかをデバッグしてください。
watanuki

2017/02/09 09:05 編集

分かりませのでひとつ質問です。 これを書いたのが結構前で忘れていたのですが、「http://gabu.hatenablog.com/entry/20101125/1290681748」のプログラムでカメラの撮影を行っていました。このサイトに「data.getData() で取得できるUriオブジェクトは null 」と書いてあるのですが、画像を書き込んでいるのに読み取ることができないとはどのように保存している状態なのですか?
yona

2017/02/09 09:24

わかりません、カメラアプリ次第です。 ・書き込み先をnullで指定した場合にカメラアプリがどのような挙動をするかはカメラアプリ次第です。 ・カメラアプリがdataにどのような値を入れて返却するかはカメラアプリ次第です。 mImageUriがどのような値かを確認してください。
watanuki

2017/02/09 16:58 編集

ありがとうございます。やっぱりよくわかりませんでした
yona

2017/02/09 17:29

わからないだけではわかりません、具体的に書いてください。
watanuki

2017/02/09 18:24

数年前まではURIには自動的?にPathが作られていたそうなのですが、androidの仕様変更で無くなったそうで、Pathをつけないといけないみたいなのですが、どうすればわからない状態です。ここで作ったURIはimageviewでの表示はできるようなのですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問