2016-10-29 21 views
1

すみません、簡単な質問:Androidで保存画像はどこにありますか?

dsocket.receive(packetReceived); // receive packet 
byte[] buff = packetReceived.getData(); // convert packet to byte[] 
final Bitmap ReceivedImage = BitmapFactory.decodeByteArray(buff, 0, buff.length); // convert byte[] to bitmap image 

runOnUiThread(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     // this is executed on the main (UI) thread 
     imageView.setImageBitmap(ReceivedImage); 
    } 
}); 

私はパケットを受信するビデオストリーム、このルーチンを持っている、そして、ビットマップに、その後、[]バイトの画面上に表示するためにそれらを変換します今、録音機能を実装したいと思います。私はFFmpegを使う必要があると言いますが(私には分かりませんが)、最初に注文した画像のディレクトリを用意してビデオファイルに変換する必要があります。私が作成に成功した場合(実際に確認するには

if(RecordVideo && !PauseRecording) { 
    saveToInternalStorage(ReceivedImage, ImageNumber); 
    ImageNumber++; 
} 
else 
{ 
    if(!RecordVideo) 
     ImageNumber = 0; 
} 

// ... 

private void saveToInternalStorage(Bitmap bitmapImage, int counter){ 
     ContextWrapper cw = new ContextWrapper(getApplicationContext()); 

     // path to /data/data/yourapp/app_data/imageDir 
     File MyDirectory = cw.getDir("imageDir", Context.MODE_PRIVATE); 

     // Create imageDir 
     File MyPath = new File(MyDirectory,"Image" + counter + ".jpg"); 

     FileOutputStream fos = null; 
     try { 
      fos = new FileOutputStream(MyPath); 

      // Use the compress method on the BitMap object to write image to the OutputStream 
      bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       fos.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     //return MyDirectory.getAbsolutePath(); 
    } 

しかし、私は私のデバイス上のディレクトリを見つけるように見えることはできません:私は内部的にすべての画像が保存されます、と私はそれぞれの画像を保存するためにthis answerを使用していますことを行うのですかディレクトリ)// path to /data/data/yourapp/app_data/imageDirはどこにありますか?それはすでにdocsに応じて存在していない場合ContextWrapper

答えて

1

getDir方法が自動的にimageDirディレクトリが作成されます。さらに、ルートにアクセスできない場合は、アプリケーションコードの外にある/dataディレクトリにあるものにはアクセスできません。 run-asコマンドがいる場合にのみ動作すること

adb shell run-as com.your.packagename cp -r /data/data/com.your.packagename/app_data/imageDir /sdcard/imageDir 

注:あなたは、このディレクトリに保存された画像を閲覧したい場合は、公にアクセス可能なディレクトリに画像を移動するには、コマンドプロンプトでadbツールを実行することができますあなたのアプリケーションはデバッグ可能です。

/sdcard/imageDirは、デバイスでアクセスする権限を持つ任意のディレクトリに置き換えることができます。 、再び

adb pull /sdcard/myDir C:\Users\Desktop 

適切な送信元と送信先のディレクトリと/sdcard/myDirC:\Users\Desktopを交換する:あなたは、その後、デバイスをオフし、あなたのマシンにファイルを移動したい場合は、公開ディレクトリからファイルをプルするadb pullを使用することができます。

+0

こんにちは、ありがとう、申し訳ありませんが、私はこれらのコマンドでnoobです、どのように私のコード内で実行できますか?それはcmdの事のように見える?また、C#デスクトップアプリケーションでは、 'C:/ .../Desktop'などのディレクトリを選択します。私はAndroidでそれを行うことはできませんか? –

+0

上記のコマンドを使ってプライベートファイルをsdcardにコピーし、 'adb pull'を使ってファイルをあなたのマシンにプルしてディレクトリを指定することができます。私は例を挙げて答えを更新します。 – cascal

+0

恐ろしい、事前に感謝してください。私は、内部ストレージ\ DCIM \ 100MEDIA \ MyDirectoryOfImages'のようなものを(あるいは想像して)ほしいと思うでしょう。たぶん、それはAndroidの仕組みではありません。私はまだ分かりません。学習:) –

関連する問題