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); } } }
android camera根据屏幕图像大小设置显示
最新推荐文章于 2021-05-26 08:13:26 发布