Измените место сохранения пользовательского приложения камеры

#android

#Android

Вопрос:

Вот мой код, эта штука работает нормально. Прямо сейчас снимки были сохранены в той же папке, что и мобильная камера, но я хочу изменить место сохранения на другую папку. Есть предложения?

 SurfaceView cameraView;
SurfaceHolder surfaceHolder;
Camera camera;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    setContentView(R.layout.main);

    cameraView = (SurfaceView)this.findViewById(R.id.CameraView);
    surfaceHolder = cameraView.getHolder();
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    surfaceHolder.addCallback(this);

    cameraView.setFocusable(true);
    cameraView.setFocusableInTouchMode(true);
    cameraView.setClickable(true);

    cameraView.setOnClickListener(this);
}
public void onClick(View v){
    camera.takePicture(null, null, this);
}

@Override
public void onPictureTaken(byte[] data, Camera camera) {
    Uri imageFileUri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, new ContentValues());
    try{
        OutputStream imageFileOS = getContentResolver().openOutputStream(imageFileUri);
        imageFileOS.write(data);
        imageFileOS.flush();
        imageFileOS.close();
    } catch(FileNotFoundException e){
        Toast t = Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT);
        t.show();
    } catch (IOException e) {
        Toast t = Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT);
        t.show();
    }
    camera.startPreview();
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {
    camera.startPreview();
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    camera = Camera.open();
    try{
        camera.setPreviewDisplay(holder);
        Camera.Parameters parameters = camera.getParameters();
        parameters.setPictureSize(640, 480);
        camera.setParameters(parameters);
    } catch(IOException e){
        camera.release();
    }
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    camera.stopPreview();
    camera.release();
}
  

Комментарии:

1. Я знаю, что это должно измениться примерно так: «Uri imageFileUri = getContentResolver().insert(Media. EXTERNAL_CONTENT_URI, new ContentValues()); » но я понятия не имею, на что изменить.

Ответ №1:

Правильно, вам нужно изменить Uri imageFileUri (или OutputStream imageFileOS). Где вы хотите сохранить файл изображения?

Комментарии:

1. Можете ли вы показать мне какой-нибудь пример? Например, если я хочу сохранить изображение в папке с именем «Pics», как я могу изменить Uri imageFileUri. Спасибо.