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

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

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

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

Android Studio

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

Q&A

解決済

2回答

3329閲覧

AndroidStudioカメラアプリ写真が保存されない(java)

atokoo

総合スコア13

Java

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

Android Studio

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

0グッド

0クリップ

投稿2016/08/03 02:18

カメラアプリを作成しているのですが、写真がうまく保存されません。ソースはこちらです。

Main.java

1package camera.ca; 2 3import android.app.Activity; 4import android.hardware.Camera; 5import android.hardware.Camera.Parameters; 6import android.hardware.Camera.Size; 7import android.os.Bundle; 8import android.os.Environment; 9import android.view.SurfaceHolder; 10import android.view.SurfaceView; 11import android.view.View; 12import android.view.Window; 13import android.view.WindowManager; 14import android.widget.Button; 15import android.widget.FrameLayout; 16import android.widget.FrameLayout.LayoutParams; 17import android.widget.Toast; 18 19import java.io.File; 20import java.io.FileOutputStream; 21import java.util.List; 22 23public class MainActivity extends Activity { 24 25 SurfaceView sv; 26 SurfaceHolder sh; 27 Camera cam; 28 29 @Override 30 protected void onCreate(Bundle savedInstanceState) { 31 super.onCreate(savedInstanceState); 32 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 33 requestWindowFeature(Window.FEATURE_NO_TITLE); 34 35 FrameLayout fl = new FrameLayout(this); 36 setContentView(fl); 37 38 sv = new SurfaceView(this); 39 sh = sv.getHolder(); 40 sh.addCallback(new SurfaceHolderCallback()); 41 42 Button btn = new Button(this); 43 btn.setText("撮影"); 44 btn.setLayoutParams(new LayoutParams(200, 150)); 45 btn.setOnClickListener(new TakePictureClickListener()); 46 47 fl.addView(sv); 48 fl.addView(btn); 49 } 50 51 class SurfaceHolderCallback implements SurfaceHolder.Callback { 52 @Override 53 public void surfaceCreated(SurfaceHolder holder) { 54 cam = Camera.open(); 55 Parameters param = cam.getParameters(); 56 List<Size> ss = param.getSupportedPictureSizes(); 57 Size pictSize = ss.get(0); 58 59 param.setPictureSize(pictSize.width, pictSize.height); 60 cam.setParameters(param); 61 } 62 @Override 63 public void surfaceChanged(SurfaceHolder holder, int f, int w, int h) { 64 try { 65 cam.setDisplayOrientation(0); 66 cam.setPreviewDisplay(sv.getHolder()); 67 68 Parameters param = cam.getParameters(); 69 List<Size> previewSizes = 70 cam.getParameters().getSupportedPreviewSizes(); 71 Size pre = previewSizes.get(0); 72 param.setPreviewSize(pre.width, pre.height); 73 74 LayoutParams lp = new LayoutParams(pre.width, pre.height); 75 sv.setLayoutParams(lp); 76 77 cam.setParameters(param); 78 cam.startPreview(); 79 } catch (Exception e) { } 80 } 81 @Override 82 public void surfaceDestroyed(SurfaceHolder holder) { 83 cam.stopPreview(); 84 cam.release(); 85 } 86 } 87 88 class TakePictureClickListener implements View.OnClickListener { 89 @Override 90 public void onClick(View v) { 91 cam.takePicture(null, null, new TakePictureCallback()); 92 } 93 } 94 95 class TakePictureCallback implements Camera.PictureCallback { 96 @Override 97 public void onPictureTaken(byte[] data, Camera camera) { 98 try { 99 File dir = new File( 100 Environment.getExternalStorageDirectory(), "Camera"); 101 if(!dir.exists()) { 102 dir.mkdir(); 103 } 104 File f = new File(dir, "img.jpg"); 105 FileOutputStream fos = new FileOutputStream(f); 106 fos.write(data); 107 Toast.makeText(getApplicationContext(), 108 "写真を保存しました", Toast.LENGTH_LONG).show(); 109 fos.close(); 110 cam.startPreview(); 111 } catch (Exception e) { } 112 } 113 } 114}

写真を保存しましたと撮影ボタンを押すと出るのですがギャラリーにもSDカードにも保存されていないみたいです。
エミュレータを使用してストレージ、カメラともに許可しています。回答の方よろしくお願いします。

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

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

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

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

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

asahina_dev

2016/08/03 02:30

それ 内部ストレージのほうに保存されてませんか?
atokoo

2016/08/03 02:37

回答ありがとうございます。エミュレータで内部ストレージとはギャラリーの事ですか?そこが分からなくてすいません
asahina_dev

2016/08/03 02:45

多分 ギャラリーアプリから見える場所じゃない場所かな
guest

回答2

0

ベストアンサー

まずはFile#getAbsoluteを使いパスの確認しましょう。
あと、ギャラリーから見るにはMediaStoreに登録する処理が必要だった覚えがあります。
また、ログキャットのメッセージを追記してください。

投稿2016/08/03 03:31

編集2016/08/03 03:33
yona

総合スコア18155

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

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

0

保存先を調べる方法

保存先は File#getAbsolutePath() で調べてみてください。

取得された場所をファイルマネージャーか adb から確認してください。

投稿2016/08/03 02:45

asahina_dev

総合スコア610

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問