Сохранение пути к файлу изображения в базу данных sqlite - PullRequest
2 голосов
/ 12 декабря 2011

Я не нашел практического примера, который конкретно относится к сохранению пути файла изображения, которое вы только что взяли с помощью приложения камеры, в базу данных SQLite в вашем приложении.

Я видел код для сохраненияизображение из источника HTML ... не хорошо!Моя проблема в том, что у меня есть URI, но, честно говоря, я не могу разобраться с доступными данными (руководство разработчика, вопросы переполнения стека), как вставить этот путь к файлу в столбец моей базы данных.

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

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {
        Bitmap x = (Bitmap) data.getExtras().get("data");
        File storagePath = new File(Environment.getExternalStorageDirectory() +
                                    "/DCIM/GPAA/"); 
        storagePath.mkdirs();
        File myImage = new File(storagePath,
                                System.currentTimeMillis() + ".jpg");
        try { 
            FileOutputStream out = new FileOutputStream(myImage); 
            x.compress(Bitmap.CompressFormat.JPEG, 80, out); 
            Uri outputFileUri = Uri.fromFile(myImage);
            mnotesText = (EditText)findViewById(R.id.notes);
            mnotesText.setText (outputFileUri.toString());
            ((ImageView)findViewById(R.id.photoResultView)).setImageBitmap(x);
            out.close();

            Toast.makeText(Review.this, 
                           "Image saved: " + outputFileUri.toString(), 
                           Toast.LENGTH_LONG).show();
        } catch (FileNotFoundException e) {
        } catch (IOException e){
        }
    }
}

С этим кодом тост проверяет, что строка доступна и правильна.Однако запись в mnotesText.setText (outputFileUri.toString()); работает в эмуляторе.Но, как ни странно, не будет работать на телефоне.

1 Ответ

1 голос
/ 12 января 2012

г.Эд ответил, предоставив этот ответ в своем собственном вопросе, я убрал его ниже:

Я уверен, что это не предпочтительный способ сделать это, но он работает:

  1. В вашем файле layout.xml определите поле для редактирования текста и скройте текст, изменив цвет текста на фон.Или нет, если вы хотите увидеть текст.

  2. Добавьте соответствующее поле в вашем менеджере баз данных.

  3. В своей деятельности вставьте текст в текстовое поле.

    String path = outputFileUri.toString();
    mpic.setText (path);
    

После сохранения путь сохраняется в базе данных.,Используйте BitmapFactory для декодирования пути изображения следующим образом:

// String username created from edit text field to a string
String username = mpic.getText().toString(); 
// Bitmap will decode the string to a image (bitmap)
Bitmap myBitmap = BitmapFactory.decodeFile(username);
// Image view used to set the bitmap
ImageView myImage = (ImageView) findViewById(R.id.photoResultView);
// Setting the image to the image view
myImage.setImageBitmap(myBitmap);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...