カメラアプリを作成して、画像の保存をした時に、
保存だけでは、ギャラリーなどに表示ができないので、
データベースに登録をしていたのですが、反映されてない場合を確認しました。
※galaxy s
values.put(Images.Media.MIME_TYPE, "image/jpeg"); values.put("_data", imgName);
上記のように形式とパスのみを記載していたのですが、
values.put(Images.Media.TITLE, imgName);
のようにタイトルも必須項目のようでした。
その他の部分は変更しておりませんが、前回までのソースは下記へ変更しております。
private Camera.PictureCallback mPictureListener =new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { myCamera.startPreview(); if (data != null) { if(!sdcardWriteReady()){ Toast.makeText(context, "SDCARDが認識されません。", Toast.LENGTH_SHORT).show(); bool = true; return; } FileOutputStream foStream = null; //フォルダのパスを表示します。。 File file = new File(Environment.getExternalStorageDirectory().getPath() + "/cmr2/"); //フォルダが存在しなかった場合にフォルダを作成します。 if(!file.exists()){ file.mkdir(); } //これで他のとかぶらない名前の設定ができました。 String imgName = Environment.getExternalStorageDirectory().getPath() + "/cmr2/" + System.currentTimeMillis() +".jpg"; try { foStream = new FileOutputStream(imgName); foStream.write(data); foStream.close(); ContentValues values = new ContentValues(); ContentResolver contentResolver = context.getContentResolver(); values.put(Images.Media.MIME_TYPE, "image/jpeg"); values.put(Images.Media.TITLE, imgName); values.put("_data", imgName); try { contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); }catch(Exception e){ Toast.makeText(context, "再起動後に画像が認識されます。", Toast.LENGTH_SHORT).show(); e.printStackTrace(); } } catch (Exception e) { Toast.makeText(context, "ファイルの保存中にエラーが発生しました。", Toast.LENGTH_SHORT).show(); e.printStackTrace(); } bool = true; }else{ Toast.makeText(context, "データが取得できませんでした。", Toast.LENGTH_SHORT).show(); bool = true; } } };