1
新しいフォルダに画像を追加するときに問題があります。私の電話がコンピュータに接続され、エミュレータとして使用されている何らかの理由で、写真は実際に正しいフォルダに保存されます。しかし、一度私はコンピュータから電話を切断すると、フォルダに画像を保存しません。私は、次の権限が含まれている:新しいフォルダに画像を追加できません
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
私のコードは、あなたがそれにデータを書き込む前に、外部ストレージをチェックする必要が怒鳴る
public class Camera extends Activity implements View.OnClickListener{
Intent i;
ImageView iv;
ImageButton ib;
Button b;
final static int cameraData = 0;
Bitmap bmp;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.camera);
initialize();
InputStream is = getResources().openRawResource(R.drawable.ic_launcher);
bmp= BitmapFactory.decodeStream(is);
}
private void initialize() {
// TODO Auto-generated method stub
iv =(ImageView) findViewById(R.id.ivReturnPic);
ib = (ImageButton) findViewById(R.id.ibTakePic);
b = (Button)findViewById(R.id.bSetWall);
b.setOnClickListener(this);
ib.setOnClickListener(this);
}
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.bSetWall:
try {
getApplicationContext().setWallpaper(bmp);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case R.id.ibTakePic:
int imageNum = 0;
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "BeautifulPlaces");
imagesFolder.mkdirs(); // <----
String fileName = "image_" + String.valueOf(imageNum) + ".jpg";
File output = new File(imagesFolder, fileName);
while (output.exists()){
imageNum++;
fileName = "image_" + String.valueOf(imageNum) + ".jpg";
output = new File(imagesFolder, fileName);
}
Uri uriSavedImage = Uri.fromFile(output);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
startActivityForResult(imageIntent, 0);
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
bmp = (Bitmap) extras.get("data");
iv.setImageBitmap(bmp);
}
}
}
は、私は電話がコンピュータに接続されているが、ときに切断されていない場合にプログラムの動作を再度示唆したように、外部ストレージが利用可能であることを確認するためのチェックを追加しました。 – user1258244
私に行方不明の許可はありますか?その奇妙なので、それはコンピュータに接続中に動作するか、それはアプリが署名されていないので、それはそれである必要がありますまだ実行されます。 – user1258244
私はあなたの保存プロセスをonActivityResultで行うべきだと思います。なぜなら、画像データは、カメラの活動が終了するまで戻ってこないからです。 – Hanon