2013-11-27 2 views
0
package com.example.cam_tab; 

import java.io.File; 
import java.io.FileOutputStream; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.provider.MediaStore; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class MainActivity extends Activity 
{ 
protected Button _button; 
protected ImageView _image; 
protected TextView _field; 
protected String _extStorageDirectory; 
protected boolean _taken; 

protected static final String PHOTO_TAKEN = "photo_taken"; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    _image = (ImageView) findViewById(R.id.imageView1); 
    _field = (TextView) findViewById(R.id.textView1); 
    _button = (Button) findViewById(R.id.button1); 
    _button.setOnClickListener(new ButtonClickHandler()); 

    File folder = new File(Environment.getExternalStorageDirectory().toString()+"/draw/Images"); 
folder.mkdirs(); 
_extStorageDirectory = folder.toString(); 
} 

public class ButtonClickHandler implements View.OnClickListener 
{ 
     public void onClick(View view) 
{ 
     Log.i("MakeMachine", "ButtonClickHandler.onClick()"); 
     startCameraActivity(); 
    } 
} 

protected void startCameraActivity() 
{ 
    Log.i("cam_tab", "startCameraActivity()"); 
    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

    File file = new File(_extStorageDirectory, System.currentTimeMillis()+"draw.jpg"); 
    Uri outputFileUri = Uri.fromFile(file); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
    startActivityForResult(intent, 0); 


     FileOutputStream fos = null; 
{ 
    try { 
     fos = new FileOutputStream(file); 
     if (fos != null) 
     { 
      Bitmap mMergedLayersBitmap = null; 
    mMergedLayersBitmap.compress(Bitmap.CompressFormat.JPEG, 85, fos); 
      fos.flush(); 
      fos.close(); 
     } 
} 
catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    Log.i("cam_tab", "resultCode: " + resultCode); 
    switch(resultCode) 
    { 
    case 0: 
     Log.i("cam_tab", "User cancelled"); 
     break; 

    case -1: 
     onPhotoTaken(); 
     break; 
} 
} 

protected void onPhotoTaken() 
{ 
    Log.i("cam_tab", "onPhotoTaken"); 

_taken = true; 

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 4; 

Bitmap bitmap = BitmapFactory.decodeFile(_path, options); 

_image.setImageBitmap(bitmap); 

_field.setVisibility(View.GONE); 
} 



@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState){ 
    Log.i("cam_tab", "onRestoreInstanceState()"); 
    if(savedInstanceState.getBoolean(MainActivity.PHOTO_TAKEN)) { 
    onPhotoTaken(); 
    } 
} 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
outState.putBoolean(MainActivity.PHOTO_TAKEN, _taken); 
} 
} 

Я не могу сохранить изображение в папке. Пожалуйста, поддержите меня с решением. Спасибо заранее. Я пробовал много вариантов, но он всегда показывает мне ошибку. Так как я впервые в андроиде, я не могу его исправить. Любая помощь будет заметнаAndroid: Сохранение изображения в папке

+0

Какая ошибка в logcat .. – Youddh

+0

убедитесь, что добавлено разрешение на запись в хранилище внешнего хранилища. –

+0

@Youddh появляется ошибка около оператора try – Aswathy

ответ

0

Вам нужно проверить, доступен ли путь или нет. Если нет, вам необходимо создать родительские каталоги

File file = new File(Environment.getExternalStorageDirectory() +File.separator + "/picture/" + ".png"); 
    if(!file.exists()){ 
     file.mkdirs(); 
    } 

просто обновите этот код.

+0

Я отредактировал свой код .. и проблема частично решена. Теперь я вижу папку, созданную ... но изображение затемнено. Есть значок jpg, но когда мы его открываем, это черный экран ... Любое решение – Aswathy

Смежные вопросы