2017-06-02 23 views
0

アンドロイドのsdカードにスクリーンショットを保存することに問題があります。以下はアンドロイドのsdカードにスクリーンショットを保存できません

はコードです:

public void onClick(View view) { 
    switch (view.getId()){ 

    case R.id.button1: 
    tf1 = et2.getText().toString(); 
    et3.setText(tf1); 
    tf2 = et1.getText().toString(); 
    et4.setText(tf2); 
    break; 
    case R.id.button2 : 
     final RelativeLayout layout = (RelativeLayout) 
    findViewById(R.id.rl); 
     layout.post(new Runnable() { 
      @Override 
      public void run() { 
       Bitmap pic = takeScreenShot(layout); 
       try{ 
        if(pic != null) 
        { 
         saveScreenShot(pic); 
         Toast.makeText(ik1.this, "Image saved Successfully!", 
           Toast.LENGTH_LONG).show(); 


        } 
        else 
        { 
         Toast.makeText(ik1.this, "Unable to save image!", 
           Toast.LENGTH_LONG).show(); 
        } 
       } 
       catch (Exception e) 
       {} 

      } 
     }); 
    { 

    } 

} 

} 
    private Bitmap takeScreenShot(View v) 
    { 
    Bitmap ScreenShot = null; 
    try{ 
    //get width and height 
    int width = v.getMeasuredWidth(); 
    int height = v.getMeasuredHeight(); 
    ScreenShot = Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_8888); 
    //draw canvas 
    Canvas c = new Canvas(ScreenShot); 
    v.draw(c); 
    } 
    catch (Exception e) 
    {} 

    return ScreenShot; 
    } 
    //Save to external storage 
    private void saveScreenShot(Bitmap bm) 
    { 
    Toast.makeText(ik1.this, "Trying to save image!", 
      Toast.LENGTH_LONG).show(); 
    ByteArrayOutputStream bao = null; 
    File file=null; 
    try{ 
     //compress and write to outputstream 
     bao = new ByteArrayOutputStream(); 
     bm.compress(Bitmap.CompressFormat.PNG,50,bao); 
     //write as a file to sd card 
     file = new File(Environment.getExternalStorageDirectory() + 
     File.separator + "player.png"); 
     file.createNewFile(); 
     FileOutputStream fos = new FileOutputStream(file); 
     fos.write(bao.toByteArray()); 
     fos.close(); 
     Toast.makeText(ik1.this, "Image saved Successfully!", 
       Toast.LENGTH_LONG).show(); 
     } 
     catch (Exception e) 
     {} 

     } 

コードがsucessfully実行されているが、画像をSDカードに保存されているnootであるとして、このコードで実行時エラーがあります。 トーストが「画像が正常に保存されました」と表示されています。 助けてください。 以下のコードを追加しました。 はマニフェストでWRITE_EXTERNAL_STORAGEアンドロイド許可を追加します。

答えて

0

はあなたのマニフェストでWRITE_EXTERNAL_STORAGEアンドロイド許可を追加します。

その後

Bitmap bitMapImg; 
void saveImage() { 
    File filename; 
    try { 
     String path = Environment.getExternalStorageDirectory().toString(); 

     new File(path + "/folder/subfolder").mkdirs(); 
     filename = new File(path + "/folder/subfolder/image.jpg"); 

     FileOutputStream out = new FileOutputStream(filename); 

     bitMapImg.compress(Bitmap.CompressFormat.JPEG, 90, out); 
     out.flush(); 
     out.close(); 

     MediaStore.Images.Media.insertImage(getContentResolver(), filename.getAbsolutePath(), filename.getName(), filename.getName()); 

     Toast.makeText(getApplicationContext(), "File is Saved in " + filename, 1000).show(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 
+0

を一切SDカードが入っていない場合、それはギャラリーに画像を保存するのでしょうか? –

+0

これをチェック:https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory%28%29 – deepThought

+0

上記のコードも動作していません。 –

関連する問題