做了一个图片上传的程序,
在模拟器里调试:拍照后获得的照片不是刚刚拍的那张,
本地选定的图片可以获得选中图片!

在HTCOnex里测试:
拍照和本地都获取不了图片!不知道是什么问题:



ShareActivity.java
publicclassShareActivityextendsActivityimplementsSerializable{

publicstaticfinalintSELECT_PIC_BY_TACK_PHOTO=1;//Camera
publicstaticfinalintSELECT_PIC_BY_PICK_PHOTO=2;//Gallery
//path-KEY
publicstaticfinalStringSAVED_IMAGE_DIR_PATH="photo_path";
privatestaticfinalStringTAG="ShareActivity";

//path
privateStringpicPath;
privateIntentlastIntent;
privateUriphotoUri;

privateRelativeLayoutlayout1;
privateRelativeLayoutlayout2;

publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main_share);

layout1=(RelativeLayout)this.findViewById(R.id.upload_photo);
layout2=(RelativeLayout)this.findViewById(R.id.upload_gallery);
lastIntent=getIntent();

layout1.setOnClickListener(newOnClickListener(){
publicvoidonClick(Viewv){
takePhoto();
}
});
layout2.setOnClickListener(newOnClickListener(){

publicvoidonClick(Viewv){
pickPhoto();
}
});
}

privatevoidtakePhoto(){

StringSDState=Environment.getExternalStorageState();
if(SDState.equals(Environment.MEDIA_MOUNTED)){

Intentintent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);

ContentValuesvalues=newContentValues();
photoUri=this.getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,photoUri);
startActivityForResult(intent,SELECT_PIC_BY_TACK_PHOTO);
}else{
Toast.makeText(this,R.string.takePhoto_msg,Toast.LENGTH_LONG)
.show();
}
}

privatevoidpickPhoto(){
Intentintent=newIntent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent,SELECT_PIC_BY_PICK_PHOTO);
}

@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
if(resultCode==Activity.RESULT_OK){
doPhoto(requestCode,data);
}
super.onActivityResult(requestCode,resultCode,data);
}

privatevoiddoPhoto(intrequestCode,Intentdata){

if(requestCode==SELECT_PIC_BY_PICK_PHOTO){
if(data==null){
Toast.makeText(this,"选择图片文件出错",Toast.LENGTH_LONG).show();
return;
}
photoUri=data.getData();
if(photoUri==null){
Toast.makeText(this,"选择图片文件出错",Toast.LENGTH_LONG).show();
return;
}
}
String[]pojo={MediaStore.Images.Media.DATA};
Cursorcursor=managedQuery(photoUri,pojo,null,null,null);
if(cursor!=null){
intcolumnIndex=cursor.getColumnIndexOrThrow(pojo[0]);
cursor.moveToFirst();
picPath=cursor.getString(columnIndex);
cursor.close();
}
Log.i(TAG,"imagePath="+picPath);
if(picPath!=null){

IntentstartEx=newIntent(ShareActivity.this,PhotoPre.class);
Bundlebundle=newBundle();
bundle.putString(SAVED_IMAGE_DIR_PATH,picPath);
startEx.putExtras(bundle);
setResult(Activity.RESULT_FIRST_USER,startEx);
startActivity(startEx);
}else{
Toast.makeText(this,"选择文件不正确!",Toast.LENGTH_LONG).show();

}

}
}


预览: PhotoPre.java
publicclassPhotoPreextendsActivity{
publicstaticStringpicPath=null;
privatestaticfinalStringTAG="PhotoPreActivity";

publicstaticfinalStringKEY_PHOTO_PATH="photo_path";
publicstaticfinalStringIMAGE_UNSPECIFIED="image/*";

privateProgressDialogprogressDialog;
privateButtonback;
privateButtonupload;
privateButtoncancel;
privateImageViewview;
privateBitmapbm;

publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.imageshow);

back=(Button)this.findViewById(R.id.phtot_back);
upload=(Button)this.findViewById(R.id.phtot_upload);
cancel=(Button)this.findViewById(R.id.phtot_cancel);
view=(ImageView)this.findViewById(R.id.photo_selected);
progressDialog=newProgressDialog(this);

back.setOnClickListener(newThisOnClickListener(0));
upload.setOnClickListener(newThisOnClickListener(1));
cancel.setOnClickListener(newThisOnClickListener(2));

Bundlebundle=getIntent().getExtras();
Stringpath=bundle.getString(KEY_PHOTO_PATH);
BitmapFactory.Optionsoptions=newBitmapFactory.Options();
options.inJustDecodeBounds=true;
bm=BitmapFactory.decodeFile(path);
view.setImageBitmap(bm);
}

protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
if(requestCode==0){
if(requestCode==1){
view.setImageBitmap(null);
picPath=data.getStringExtra(ShareActivity.SAVED_IMAGE_DIR_PATH);
Log.i(TAG,"最终选择的图片="+picPath);
Bitmapbm=BitmapFactory.decodeFile(picPath);
view.setImageBitmap(bm);
}elseif(requestCode==2){

try{
Bitmapbm=null;
ContentResolverresolver=getContentResolver();
Uriuri=data.getData();
bm=MediaStore.Images.Media.getBitmap(resolver,uri);

String[]pro={MediaStore.Images.Media.DATA};
Cursorcursor=managedQuery(uri,pro,null,null,null);
intcolumn_index=cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
StringpicPath1=cursor.getString(column_index);
Bitmapbitmap=BitmapFactory.decodeFile(picPath1);
view.setImageBitmap(bitmap);
cursor.close();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
Log.e(TAG,e.toString());
}
}
}
super.onActivityResult(requestCode,resultCode,data);
}

publicclassThisOnClickListenerimplementsOnClickListener{
privateintindex=0;

privateThisOnClickListener(inti){
index=i;
}

@Override
publicvoidonClick(Viewv){
switch(index){
case0:
Intentintent=newIntent(PhotoPre.this,MainActivity.class);
startActivity(intent);
break;
case1:
try{
postFile();
}catch(Exceptione){
e.printStackTrace();
}
break;
case2:
Intentintent1=newIntent(PhotoPre.this,ShareActivity.class);
startActivity(intent1);
break;
}

}

}

privatevoidpostFile()throwsException{
progressDialog.setMessage("正在上传文件...");
HttpClienthttpclient=newDefaultHttpClient();
httpclient.getParams().setParameter(
CoreProtocolPNames.PROTOCOL_VERSION,HttpVersion.HTTP_1_1);

HttpPosthttppost=newHttpPost("http://localhost:9002/upload.php");
Filefile=newFile("c:/TRASH/zaba_1.jpg");

FileEntityreqEntity=newFileEntity(file,"binary/octet-stream");

httppost.setEntity(reqEntity);
reqEntity.setContentType("binary/octet-stream");
System.out.println("executingrequest"+httppost.getRequestLine());
HttpResponseresponse=httpclient.execute(httppost);
HttpEntityresEntity=response.getEntity();

System.out.println(response.getStatusLine());
if(resEntity!=null){
System.out.println(EntityUtils.toString(resEntity));
}
if(resEntity!=null){
resEntity.consumeContent();
}

httpclient.getConnectionManager().shutdown();
}

}

18 个解决方案

#1


图1和图2都是单独的Activity

更多相关文章

  1. Android——播放器和图片轮播
  2. Android实现非本地图片的点击效果
  3. android 中的 odex 文件
  4. Android自定义Toast带图片的
  5. Android 在资源文件(res/strings.xml)定义一维数组,间接定义二维数
  6. 使用Android Dropbox API检查Dropbox上是否存在文件
  7. Android 自定义控件 改变图片颜色来实现类似selector点击更改颜
  8. Android中的内存储、外存储概念、文件操作与PC端的有些不同
  9. Android 打包VersionCode自增、APK文件名修改、上传蒲公英

随机推荐

  1. android ndk开发-环境搭建(1)
  2. Android开机广播
  3. android 参数含义
  4. 为android 工程添加单元测试
  5. android 圆环(ring)drawable 画法 ——简单
  6. 那些年收藏的技术文章(一)-CSDN篇
  7. Android短信----发送流程---框架层(Framew
  8. Android_day04
  9. CSDN 很经典的博客 您值得一览
  10. qt for android