有关拍照并获取图片显示出来的问题

来源:互联网 发布:iphone7值得买吗 知乎 编辑:程序博客网 时间:2024/05/15 14:30

     最近接的一个私活涉及到拍照并显示出来图片的问题,但是在写代码的过程中,自己出现了一些问题:拍照了,在图库中可以查询到图片,但是就是显示不出来,debug以后发现获取的图片为null;


   然后就对整个代码进行了检查跟修改。


 首先是整个界面的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="拍照" 
        android:id="@+id/bt_photo"
        />
 <TextView 
     android:layout_width="200dip"
     android:layout_height="200dip"
     android:id="@+id/tv_add"
     android:layout_centerInParent="true"
     />
</RelativeLayout>

流程:点击按钮调用系统拍照功能----拍照完毕,存储图片-----在TextView上显示出图片来。
废话不多说,直接进入代码的部分:
public class MainActivity extends Activity implements OnClickListener {
private Button bt_add;//拍照按钮
private int i = 0;//变量变量i
public static final int TAKE_PICTURE_ORIGINAL = 8888;//请求码
private Bitmap bitmap;//bitmap对象
private File file;//文件对象
private TextView tv_add;//要显示图片的textView


@Override
protected void onCreate(Bundle savedInstanceState) {  //在这里面初始化所有的控件,并设置按钮的点击事件
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_add = (Button) findViewById(R.id.bt_photo);
bt_add.setOnClickListener(this);
tv_add = (TextView) findViewById(R.id.tv_add);
}


@Override
public void onClick(View arg0) {  //实现按钮的点击事件-----在点击的时候所要做得操作是调用系统拍照的功能
// TODO Auto-generated method stub
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

file = new File("mnt/sdcard/DCIM/Camera/" + getPhotoFileName());//以这样的路径创建一个文件
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(intent, TAKE_PICTURE_ORIGINAL);
}


private String getPhotoFileName() {  //以时间戳为基础的图片名字
// TODO Auto-generated method stub
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat(
"'IMG'_yyyyMMdd_HHmmss");
return dateFormat.format(date) + ".jpg";
}


既然是startActivityForResult启动的  那就得重写OnActivityResult()方法


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub

if (requestCode == TAKE_PICTURE_ORIGINAL) {

bitmap = loadBitmap(file.getPath()); 
Drawable drawable = new BitmapDrawable(bitmap);
tv_add.setBackground(drawable);
i++;
}
super.onActivityResult(requestCode, resultCode, data);
}

private Bitmap loadBitmap(String path) {//根据路径获得图片
// TODO Auto-generated method stub

bitmap = BitmapFactory.decodeFile(path,null);
return bitmap;
}

0 0
原创粉丝点击