2011-12-12 742 views
2

カメラアプリケーションで撮影したばかりの画像のファイルパスをアプリケーションのSQLiteデータベースに保存する具体的な例は見つかりませんでした。画像ファイルのパスをsqliteデータベースに保存する

私はHTMLソースから画像を保存するコードを見ました...いいえ!私の問題は、私はURIを持っているが、正直なところ、私は利用可能なデータ(devガイド、スタックオーバーフローの質問)私のデータベースの列にそのファイルパスを挿入する方法を見つけることができません。

私のコードでは、パスをデータベースに保存できるように編集テキストフィールドを設定しようとしています。私はエミュレータでこれを試しました:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) { 
     Bitmap x = (Bitmap) data.getExtras().get("data"); 
     File storagePath = new File(Environment.getExternalStorageDirectory() + 
            "/DCIM/GPAA/"); 
     storagePath.mkdirs(); 
     File myImage = new File(storagePath, 
           System.currentTimeMillis() + ".jpg"); 
     try { 
      FileOutputStream out = new FileOutputStream(myImage); 
      x.compress(Bitmap.CompressFormat.JPEG, 80, out); 
      Uri outputFileUri = Uri.fromFile(myImage); 
      mnotesText = (EditText)findViewById(R.id.notes); 
      mnotesText.setText (outputFileUri.toString()); 
      ((ImageView)findViewById(R.id.photoResultView)).setImageBitmap(x); 
      out.close(); 

      Toast.makeText(Review.this, 
          "Image saved: " + outputFileUri.toString(), 
          Toast.LENGTH_LONG).show(); 
     } catch (FileNotFoundException e) { 
     } catch (IOException e){ 
     } 
    } 
} 

このコードでは、トーストは文字列が利用可能で正しいことを確認します。しかし、mnotesText.setText (outputFileUri.toString());のエントリはエミュレータで動作します。しかし、不思議なことに、電話ではうまくいきません。

+1

:このようなイメージのパスをデコードするBitmapFactoryを使用してください。あなたがより良い答えを待っていたいならば、それを受け入れないでください。 (ここでは何千もの質問が解決されているが、タイトルには「SOLVED」がほとんどないことに注意してください)。 –

答えて

1

氏エドが答えた彼自身の質問にこの答えを提供し、私は以下のことをクリーンアップ:

私は、これはこれを行うための好ましい方法ではないと確信しているが、それは動作します:

  1. layout.xmlに編集テキストフィールドを定義し、テキストの色を背景に変更してテキストを非表示にします。または、テキストを表示したい場合

  2. データベースマネージャーに適切なフィールドを追加します。

  3. アクティビティでは、テキストフィールドにテキストを挿入します。

    String path = outputFileUri.toString(); 
    mpic.setText (path); 
    

それが保存されている場合、パスがデータベースに保存されます。 (はい、それはあなた自身の質問に答えるために完全に受け入れられるのです)、あなたの問題が解決されている場合は、あなたが答えのような溶液を投稿する必要があります

// String username created from edit text field to a string 
String username = mpic.getText().toString(); 
// Bitmap will decode the string to a image (bitmap) 
Bitmap myBitmap = BitmapFactory.decodeFile(username); 
// Image view used to set the bitmap 
ImageView myImage = (ImageView) findViewById(R.id.photoResultView); 
// Setting the image to the image view 
myImage.setImageBitmap(myBitmap); 
関連する問題