package com.example.camera;import java.io.File;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.text.format.Time;import android.util.Log;import android.view.Display;import android.widget.ImageView;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;public class MainActivity extends Activity {    private final static String TAG="camera";    private final static int CAMERA_RESULT =0;    private ImageView view;    private String imageFilePath;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                //得到当前系统时间        Time t=new Time();        t.setToNow();        int year=t.year;        int month=t.month;        int day=t.monthDay;        int hour=t.hour;        int minute=t.minute;        int second=t.second;        Log.i(TAG, ""+year+month+day+hour+minute+second);        String filename=""+year+month+day+hour+minute+second;        //得到SD卡的路径也设置文件名        //这里可以简化的写成imageFilePath=Uri.parse("file:////sdcard/my.jpg");        /*imageFilePath=Environment.getExternalStorageDirectory()                .getAbsolutePath()+"/my01.jpg";*/        imageFilePath=Environment.getExternalStorageDirectory()                .getAbsolutePath()+"/"+filename+".jpg";        //创建文件        File file=new File(imageFilePath);        //格式化为Uri        Uri fileImageFilePath=Uri.fromFile(file);        view=(ImageView)findViewById(R.id.imageview);        Intent i=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);//启动intent        //设置到意图中        i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, fileImageFilePath);        startActivityForResult(i, CAMERA_RESULT);    }    //返回接收    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // TODO Auto-generated method stub        super.onActivityResult(requestCode, resultCode, data);        if(resultCode==RESULT_OK){            //以1/8加载原图像的大小            /*BitmapFactory.Options options=new BitmapFactory.Options();            options.inSampleSize=8;            Bitmap bitmap=BitmapFactory.decodeFile(imageFilePath, options);*/                                    /*Bundle bundle=data.getExtras();            Bitmap bitmap=(Bitmap) bundle.get("data");*/                        //            view.setImageBitmap(bitmap);                        //得到图像的大小和显示的大小,动态解压            Display display=getWindowManager().getDefaultDisplay();            int dw=display.getWidth();            int dh=display.getHeight();                        //加载图像            BitmapFactory.Options options=new BitmapFactory.Options();            options.inJustDecodeBounds=true;//设置之后可以设置长宽            Bitmap bitmap=BitmapFactory.decodeFile(imageFilePath, options);                        int heightRatio=(int)Math.ceil(options.outHeight/(float)dh);            int widthRatio=(int)Math.ceil(options.outWidth/(float)dw);                        Log.i(TAG, "heith:"+heightRatio);            Log.i(TAG,"width:"+widthRatio);            //判断长宽哪个大            if(heightRatio>1 && widthRatio>1){                if(heightRatio>widthRatio){                    options.inSampleSize=heightRatio;                }else{                    options.inSampleSize=widthRatio;                }            }            //对它进行真正的解码            options.inJustDecodeBounds=false;            bitmap=BitmapFactory.decodeFile(imageFilePath, options);            view.setImageBitmap(bitmap);                                            }    }  }

更多相关文章

  1. android在java中动态改变控件大小
  2. android 网络异步加载
  3. 可循环显示图像的Android Gallery组件
  4. Android动态设置View的位置和大小
  5. android listView 滚动加载显示
  6. android 横竖屏切换 分辨率大小设置的模拟器

随机推荐

  1. android 开发中遇到的问题及解决方法
  2. ArcGis for Android(安卓)shp
  3. Twitter V1.1在Android中的应用
  4. MySQL Delete 删数据后磁盘空间未释放的
  5. MySQL sql_mode修改不生效的原因及解决
  6. 一篇文章弄懂MySQL查询语句的执行过程
  7. 详解MySQL主从复制及读写分离
  8. MySQL 表空间碎片的概念及相关问题解决
  9. MySQL kill不掉线程的原因
  10. MySQL数字类型自增的坑