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アンドロイド許可を追加します。
を一切SDカードが入っていない場合、それはギャラリーに画像を保存するのでしょうか? –
これをチェック:https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory%28%29 – deepThought
上記のコードも動作していません。 –