这个是我定义的类:
public File createImageFile() {
String fileName="";
File mediaStorageDir = new File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
fileName);
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d("----", "failed to create directory");
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
String suffix = ".jpg";
File image = new File(mediaStorageDir + File.separator + timeStamp + suffix);
return image;
}这个是调用后相机的活动: @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
@AfterPermissionGranted(1)
protected void onResume() {
super.onResume();
if (EasyPermissions.hasPermissions(PhotoCaptureActivity.this, perms)) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imgUri = createImageFile();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imgUri));
} else {
ContentValues contentValues = new ContentValues(1);
contentValues.put(MediaStore.Images.Media.DATA, imgUri.getAbsolutePath());
Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
}
startActivityForResult(takePictureIntent, REQUEST_CODE);
} else {
EasyPermissions.requestPermissions(this, "", 1, perms);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (REQUEST_CODE == requestCode && resultCode == RESULT_OK) {
Log.i("---success---", imgUri + "");
ArrayList<String> strings = new ArrayList<>();
strings.add(imgUri.toString());
if (photoListener != null)
photoListener.onChoose(strings);
if (waterMarkListener != null) {
WaterMask.WaterMaskParam maskParam = waterMarkListener.onDraw();
Bitmap bitmap = ImageUtil.getBitmap(String.valueOf((imgUri)));
// WaterMask.saveJPGE_After(rotateBitmapByDegree(bitmap, readPictureDegree(String.valueOf(imgUri))),String.valueOf(imgUri));
WaterMask.draw(this, bitmap, String.valueOf((imgUri)), maskParam);
}
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imgUri)));
}
finish();
}
public File createImageFile() {
Intent intent=getIntent();
String cu=intent.getStringExtra("custno");
String fileName="";
File mediaStorageDir = new File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
fileName);
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d("----", "failed to create directory");
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
String suffix = ".jpg";
File image = new File(mediaStorageDir + File.separator + timeStamp + suffix);
return image;
}
}
因为我之前用的是下的一个Demo,用了Intent传值到调用相机的活动中,但是传过去之后就会启动调用相机的活动,我只是想把值给传过去,而不是直接传过去了就启动相机,所以就把这个调用相机的活动中的需要获取值的方法createImageFile()单独拿出来,就是最上面的那段代码。但是现在不知道该怎么传值,怎么操作了,求大神指教一波。萌新一个
public File createImageFile() {
String fileName="";
File mediaStorageDir = new File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
fileName);
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d("----", "failed to create directory");
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
String suffix = ".jpg";
File image = new File(mediaStorageDir + File.separator + timeStamp + suffix);
return image;
}这个是调用后相机的活动: @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
@AfterPermissionGranted(1)
protected void onResume() {
super.onResume();
if (EasyPermissions.hasPermissions(PhotoCaptureActivity.this, perms)) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imgUri = createImageFile();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imgUri));
} else {
ContentValues contentValues = new ContentValues(1);
contentValues.put(MediaStore.Images.Media.DATA, imgUri.getAbsolutePath());
Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
}
startActivityForResult(takePictureIntent, REQUEST_CODE);
} else {
EasyPermissions.requestPermissions(this, "", 1, perms);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (REQUEST_CODE == requestCode && resultCode == RESULT_OK) {
Log.i("---success---", imgUri + "");
ArrayList<String> strings = new ArrayList<>();
strings.add(imgUri.toString());
if (photoListener != null)
photoListener.onChoose(strings);
if (waterMarkListener != null) {
WaterMask.WaterMaskParam maskParam = waterMarkListener.onDraw();
Bitmap bitmap = ImageUtil.getBitmap(String.valueOf((imgUri)));
// WaterMask.saveJPGE_After(rotateBitmapByDegree(bitmap, readPictureDegree(String.valueOf(imgUri))),String.valueOf(imgUri));
WaterMask.draw(this, bitmap, String.valueOf((imgUri)), maskParam);
}
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imgUri)));
}
finish();
}
public File createImageFile() {
Intent intent=getIntent();
String cu=intent.getStringExtra("custno");
String fileName="";
File mediaStorageDir = new File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
fileName);
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d("----", "failed to create directory");
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
String suffix = ".jpg";
File image = new File(mediaStorageDir + File.separator + timeStamp + suffix);
return image;
}
}
因为我之前用的是下的一个Demo,用了Intent传值到调用相机的活动中,但是传过去之后就会启动调用相机的活动,我只是想把值给传过去,而不是直接传过去了就启动相机,所以就把这个调用相机的活动中的需要获取值的方法createImageFile()单独拿出来,就是最上面的那段代码。但是现在不知道该怎么传值,怎么操作了,求大神指教一波。萌新一个
解决方案 »
- 各位大侠 ,微信中的“听首老歌”的页面怎样实现的???
- NDK编译问题 代码编译没错 但是不能生成so
- 新手求助 自定义控件用findViewById方法取出来为null
- videoview如何进行视频缩放
- Android应用创新点征集
- PC上的java程序可以不加修改地运行到 android平台上吗?
- Android子线程中显示对话框和toast的问题
- RelativeLayout 设置android:layout_centerVertical="true"但不完全居中
- Android怎样在应用中启动另一个应用并放在后台运行?
- AIDL进程间传递自定义类型参数
- 关于keyboardlayout与locale的对应关系
- android小白求大神帮忙看一下这个折磨了我一天的问题
private String output;
public String getOutput(){
return output;
} public Exam() {
MainActivity.setOnMainActivityListener(this);
} @Override
public void test(String output) {
this.output=output;
}
} public class MainActivity extends AppCompatActivity {
private static MainActivityCallback mCallback;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Exam exam=new Exam();
mCallback.test("随便测试一下");
Log.v("测试",exam.getOutput());
}
public static void setOnMainActivityListener(MainActivityCallback callback){
mCallback=callback;
}
public interface MainActivityCallback{
void test(String output);
}
如果存在上下文通用关系 可以拿SharedPreferences 存储获取。