基本的に、私がやりたいことは、ユーザーが自分でfolder
を作成し、activity
を含むbutton
に移動してcamera
を起動できるようにすることです。 。
そこからcamera
を起動し、camera
画像を新しく作成したフォルダーに保存できるようにしたいと思います。
新しく作成したフォルダーにcamera
画像を保存する最後の部分で問題が発生しています。
これが私のCode
です:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
EditText text = (EditText)findViewById(R.id.editText1);
EditText text2 = (EditText)findViewById(R.id.editText2);
@Override
public void onClick(View v) {
final String name = text.getText().toString();
final String placeName = text2.getText().toString();
String place = placeName.substring(0,3);
String direct = name + place ;
File folder = new File("/sdcard/CameraTest/" + direct + "/");
folder.mkdirs();
Intent myIntent = new Intent(CameraTestActivity.this, Press.class);
myIntent.putExtra("key", "/sdcard/CameraTest/" + direct + "/");
startActivity(myIntent);
}
});
ここから私はこの活動に移行します:
public class Press extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.afterenter);
final String direct = this.getIntent().getStringExtra("key");
// TODO Auto-generated method stub
Button p = (Button) findViewById(R.id.button2);
p.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent camera= new Intent(Android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(camera, 1);
}
});
Button np = (Button) findViewById(R.id.button3);
np.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent next = new Intent(Press.this, CameraTestActivity.class);
startActivity(next);
}
});
}
}
savecamera
から新しく作成したフォルダーに画像を保存する方法を教えてください。
ユーザーがいくつかのpicturesを取得して、それらのいくつかのpicturesをその特定のフォルダに保存できるようにしたい。
カメラのアクティビティを呼び出す前にこのコードを追加し、
Uri uriSavedImage=Uri.fromFile(new File("/sdcard/flashCropped.png"));
camera.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
startActivityForResult(camera, 1);
これを試してください...
_path = Environment.getExternalStorageDirectory() + "/photo1.jpg";
File file = new File(path);
Uri outputFileUri = Uri.fromFile(file);
Intent intent = new Intent(Android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY);
_
実装していないonActivityResult()
試してみてください。
_public void onActivityResult(int requestCode, int resultCode, Intent data) {
System.gc();
if (requestCode == CAPTURE_IMAGE_ACTIVITY) {
if (resultCode == Activity.RESULT_OK) {
try {
// Call function MakeFolder to create folder structure if
// its not created
if(imageBitmap != null) {
imageBitmap = null;
imageBitmap.recycle();
}
MakeFolder();
// Get file from temp1 file where image has been stored
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 3;
imageBitmap = BitmapFactory.decodeFile(path, options);
imgForPhotograph.setImageBitmap(imageBitmap);
isImageTaken = true;
// Name for image
IMAGEPATH = getString(R.string.chassisImage)
+ System.currentTimeMillis();
SaveImageFile(imageBitmap,IMAGEPATH);
} catch (Exception e) {
Toast.makeText(this, "Picture Not taken",
Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
}
_
ファイルの場所を画像キャプチャインテントに追加する必要があります。例えば:
camera.putExtra(Android.provider.MediaStore.EXTRA_OUTPUT, [file location]);
見てください ここ