我还不熟悉开发,我想知道是否有人能引导我走向正确的方向,因为我不知道从哪里开始:
计划:
按下capture_button
以捕获图片(capture_button
且imagePreview
处于同一活动中)后,我想删除capture_button
并拥有{{1 }或ACCEPT
按钮。这些按钮应该是DECLINE
图像,然后保存,或accept
图像并返回到imagePreview。
现在,我不确定在按下decline
时是否应该创建另一个活动,
PhotoActivity.java
capture_button
现在,我应该在public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.photo);
mCamera = getCameraInstant();
mCameraPreview = new CameraPreview(this, mCamera);
FrameLayout preview = (FrameLayout) findViewById(id.camera_preview);
preview.addView(mCameraPreview);
// Add a listener to the Capture button
Button captureButton = (Button) findViewById(id.button_capture);
captureButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// get an image from the camera
mCamera.takePicture(null, null, mPicture);
}
}
);
}
PictureCallback mPicture = new PictureCallback(){
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Log.e("photo","pictureCallback");
// TODO Auto-generated method stub
File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
if(pictureFile==null){
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
} catch (FileNotFoundException e) {
Log.d(TAG, "File not found: " + e.getMessage());
} catch (IOException e){
Log.d(TAG, "Error accessing file: " + e.getMessage());
}
}
};
private File getOutputMediaFile(int type){
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "Photo");
if (!mediaStorageDir.exists()){
if (! mediaStorageDir.mkdirs()){
Log.d("Photo", "failed to create directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"IMG_"+ timeStamp + ".jpg");
return mediaFile;
}
点击后或
Intent
capture_button
然后在其他活动中拥有PictureCallback mPicture = new PictureCallback(){
?或者我的想法都错了?
请帮帮忙?
提前谢谢。
答案 0 :(得分:0)
试试这会对你有所帮助
final LinearLayout accept_deciline = new LinearLayout(getApplicationContext());
LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
accept_deciline.setOrientation(LinearLayout.HORIZONTAL);
Button accept = new Button(getApplicationContext());
accept.setText("Accept");
Button decline = new Button(getApplicationContext());
decline.setText("Decline");
accept_deciline.addView(accept);
accept_deciline.addView(decline);
addContentView(accept_deciline, lp);
accept_deciline.setVisibility(View.INVISIBLE);
accept.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// SAVE YOUR IMAGE.
}
});
decline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
//KEEP THIS LINE IN YOUR PICTURE CALLBACK NOT HERE.
accept_deciline.setVisibility(View.VISIBLE);
如果您将在XML文件中创建您的接受拒绝布局,并且在您拍摄的照片将被视为可见时,它将更加可见。
答案 1 :(得分:0)
我做的一件事是使用在拍照后弹出的警报对话框。您可以设置onclick侦听器,以根据您要发生的事情(接受或拒绝)执行您需要的任何操作。这样可以避免对布局进行任何更改并添加按钮并将其删除。您可以通过在onPictureTaken方法的末尾放置alertdialog.show()方法来启动alertdialog。
如果你这样做,你必须拥有你刚拍摄的图像的文件路径,这样你就可以让用户在它拒绝的情况下销毁它,而在某些设备上它可能需要mediaservice几秒钟来更新图像文件路径所以,如果你去摧毁一个图像,它不会看到你可以关闭一个力量。有几种方法可以做到这一点,我现在无法记住,但其中一种比其他方式更快。
除非您计划启动其他类型的操作,活动,服务等,否则您不需要意图。例如,如果您想将图像的文件路径传递给另一个可以对其进行更改的活动,上传它或者您有什么,您可以将图像的文件路径添加到这样的意图: intent.putExtra( “的ImagePath”,的ImagePath);