Java 如何将图像路径作为参数传递给要从相机拍摄的图像
我将图像作为此函数中的参数传递: twitt.ShareToWitter(字符串消息、铸造图像); (void chintan.khetiya.android.Twitter\u code.Twitt\u Sharing.ShareToWitter(字符串msg,文件图像\u url)) 现在在这里,我选择的图像从画廊,但现在我想采取的照片从凸轮和通过它。怎么做 以下是完整的代码:Java 如何将图像路径作为参数传递给要从相机拍摄的图像,java,android,image,file,camera,Java,Android,Image,File,Camera,我将图像作为此函数中的参数传递: twitt.ShareToWitter(字符串消息、铸造图像); (void chintan.khetiya.android.Twitter\u code.Twitt\u Sharing.ShareToWitter(字符串msg,文件图像\u url)) 现在在这里,我选择的图像从画廊,但现在我想采取的照片从凸轮和通过它。怎么做 以下是完整的代码: public class MainActivity extends Activity { // Replace
public class MainActivity extends Activity {
// Replace your KEY here and Run ,
public final String consumer_key = "trWwomp0b09ER2A8H1cQg";
public final String secret_key = "PAC3E3CtcPcTuPl9VpCuzY6eDD8hPZPwp6gRDCviLs";
File casted_image;
String string_img_url = null, string_msg = null;
Button btn, pick, cam;
EditText et;
ImageView iv;
private static int RESULT_LOAD_IMAGE = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
setContentView(R.layout.main);
iv = (ImageView) findViewById(R.id.imageView1);
pick = (Button) findViewById(R.id.button1);
pick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, 1);
}
});
cam = (Button) findViewById(R.id.button2);
cam.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent takePicture = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePicture, 0);
}
});
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
onClickTwitt();
}
});
} catch (Exception e) {
// TODO: handle exception
runOnUiThread(new Runnable() {
public void run() {
showToast("View problem");
}
});
}
}
public void Call_My_Blog(View v) {
Intent intent = new Intent(MainActivity.this, My_Blog.class);
startActivity(intent);
}
// Here you can pass the string message & image path which you want to share
// in Twitter.
public void onClickTwitt() {
if (isNetworkAvailable()) {
Twitt_Sharing twitt = new Twitt_Sharing(MainActivity.this,
consumer_key, secret_key);
et = (EditText) findViewById(R.id.editText1);
string_msg = et.getText().toString();
twitt.shareToTwitter(string_msg, casted_image);
} else {
showToast("No Network Connection Available !!!");
}
}
// when user will click on twitte then first that will check that is
// internet exist or not
public boolean isNetworkAvailable() {
ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
return false;
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false;
}
private void showToast(String msg) {
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
}
protected void onActivityResult(int requestCode, int resultCode,
Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch (requestCode) {
case 0:
if (resultCode == RESULT_OK) {
Uri selectedImage = imageReturnedIntent.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
// file path of captured image
String filePath = cursor.getString(columnIndex);
// file path of captured image
casted_image = new File(filePath);
}
break;
case 1:
if (requestCode == 1 && resultCode == RESULT_OK
&& null != imageReturnedIntent) {
Uri selectedImage = imageReturnedIntent.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
casted_image = new File(picturePath);
cursor.close();
iv.setImageURI(selectedImage);
// String picturePath contains the path of selected Image
break;
}
}
}
}
意图:
Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePicture, 0);
要获取该结果,请执行以下操作:
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch(requestCode) {
case 0:
if (requestCode == 0 && resultCode == RESULT_OK) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
// CALL THIS METHOD TO GET THE URI FROM THE BITMAP
Uri tempUri = getImageUri(getApplicationContext(), photo);
// CALL THIS METHOD TO GET THE ACTUAL PATH
casted_image = new File(getRealPathFromURI(tempUri));
System.out.println(tempUri);
}
break;
case 1:
//handle gallery code here
break;
}
}
public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
public String getRealPathFromURI(Uri uriTemp) {
Cursor cursor = getContentResolver().query(uriTemp, null, null, null, null);
cursor.moveToFirst();
int mIndex = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
return cursor.getString(mIndex);
}
将其添加到manifest.xml中
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
要请求相机的特定文件位置,必须执行以下操作:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraCaptureLocation = new File("... location goes here ...");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraCaptureLocation));
startActivityForResult(intent, REQUEST_CAMERA);
但是有一个问题,因为我在同一个地方使用cam和gallery,activityResult函数已经存在了。现在该怎么办
然后您必须使用
requestCode
来筛选活动结果的来源。您为REQUEST\u CAMERA
传递了一个整数,为REQUEST\u GALLERY
传递了另一个整数,但存在一个问题,因为我在同一位置同时使用cam和GALLERY,所以activityresult函数已经存在。现在要做什么。?为案例0:
放置一个try catch
,并将错误记录在日志cat上,并从Uri selectedImage=imageReturnedIntent.getData()中记录selectedImage
代码>使用Log.d(“我的日志”,“选择图像”)代码>和catch块Log.d(“我的日志”和“+ex)
Great。。。我已经回答你了,看看它是否有效。。如果是soHi,请接受它,您能回答吗?对不起,我没有处理linkedin授权,请尝试从onClick()
调试您的代码,看看是否有错误,null
从某个url返回
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraCaptureLocation = new File("... location goes here ...");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraCaptureLocation));
startActivityForResult(intent, REQUEST_CAMERA);