在我的应用程序中,我必须实现原生相机活动,我必须启动相机并拍照.
详细地说,我的应用程序包含,One TextView(在顶部)显示活动名称和一个按钮(在底部)和屏幕的中间区域,应该查看相机预览..当用户单击该按钮时,应单击快照并将其显示在另一个活动的Imageview中.
我知道使用以下方法:
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri );
startActivityForResult( intent, 0 );
Run Code Online (Sandbox Code Playgroud)
但是如果我使用这种方法则不会显示我的textview和按钮视图.
(请注意:我正在使用Android SDK 1.5和HTC Hero)
请通过任何文章,网站或pdf的建议来帮助我.
thanx,paresh
android android-camera android-camera-intent android-capture
我使用以下代码从相机拍摄照片并获取照片的路径.
...
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_IMAGE_CAPTURE); // image capture
...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult:" + resultCode + " request:" + requestCode);
switch (requestCode) {
case CAMERA_IMAGE_CAPTURE:
Uri selectedImageUri = data.getData();
userImagePath = getPath(selectedImageUri);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
它在仿真器和不同设备上运行良好.但在三星Galaxy Nexus(4.0.2)上,它没有推出Camera应用程序.但是它将RESULT_OK返回给onActivityResult,我在LogCat中看不到任何异常.请给我并建议如何解决这个问题.提前致谢!
我已经对这个问题进行了大量的研究,并且看到了一些很好的反应,并找到了一些很好的"解决方案"来解决这个问题.不幸的是,我仍然在某些设备上遇到很多应用程序崩溃.崩溃发生在某人拍摄照片后,相机意图应将信息传递回调用活动.出于我的应用程序的目的,我只是使用新拍摄的照片覆盖任何现有照片,因此我可以使用几乎一个静态路径到文件位置.以下是我如何调用意图:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// get the file path from an external class (necessary for galaxy nexus)
imageFileAndPath = ImageServices.getOutputImageFileUri(cont);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageFileAndPath);
startActivityForResult(intent, CAMERA_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
imageFileAndPath只是一个URI变量,我是从一个单独的类创建的,因为这解决了另一个问题,即按"完成"或复选标记或者它在特定设备上关闭相机意图没有做任何事情几种设备类型.通过从单独的类创建URI,它可以解决该问题,原因不明.
我的onActivityResult看起来像这样:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == Activity.RESULT_OK)
{
if (requestCode == CAMERA_REQUEST_CODE) {
setupImageView();
imageView = (ImageView) findViewById(R.id.image_view);
webView.setVisibility(View.GONE);
imageView.setVisibility(View.VISIBLE);
button.setVisibility(View.GONE);
reTakePicButton.setVisibility(View.VISIBLE);
rl.setVisibility(View.VISIBLE);
}
}
}
Run Code Online (Sandbox Code Playgroud)
因为我不需要动态路径来保存我的照片(因为它覆盖了现有的照片),我只是在我的活动中调用另一种方法来调整照片的大小并相应地旋转它.该方法如下:
private void setupImageView() {
imageLocation = Environment.getExternalStorageDirectory().getAbsolutePath() + "/myappphoto/myappphoto.jpg";
// Get the dimensions of the View
Display display = …Run Code Online (Sandbox Code Playgroud) 我正在创建一个Android应用程序,有点像停止动作应用程序,旨在即使在移动过程中有效拍照.我想设置非常低的快门速度和高光圈以获得更好的照片,特别是在相机运动时,但是堆栈溢出的一些答案表明我无法设置快门速度和光圈(如果我错了,请纠正我) .我没有使用相机意图,而是使用startPreview创建相机对象,然后是setCameraParams,然后是takePicture.
android api中的其他摄像头参数有哪些,我可以设置为使其在运动中精确高效?我正在设置SCENE_MODE_SPORTS并尝试设置FOCUS_MODE_CONTINUOUS_PICTURE(虽然我的相机不支持测试).
android android-camera android-camera-intent android-sdk-2.3
我有一个非常奇怪的问题.以下代码用于在按钮单击时拍照.它适用于Jelly Bean手机,但不适用于Kitkat:
MainActivity.java:
package com.example.takepic;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private final static String DEBUG_TAG = "MakePhotoActivity";
private Camera camera;
private Button capture = null;
private int cameraId = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
capture = (Button)findViewById(R.id.captureBack);
capture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
camera.startPreview(); //After this, nothing gets …Run Code Online (Sandbox Code Playgroud) 我在Android中使用相机,我是Android相机的新手.我从这里开始关注教程
每当我在android清单中添加外部存储权限时,相机会将其保存在默认目录中,而不会询问我,我想将其保存在我在sd卡中创建的文件夹中.我搜索了很多但找不到任何有用的链接.请帮助,任何帮助将不胜感激.谢谢 :)
我将我的nexus 5 Android操作系统版本更新为5.1.1,并更新了Google相机和Google相册应用程序.在此之后,当我尝试捕获图像并裁剪它时,我的应用程序崩溃并出现以下错误:
FATAL EXCEPTION: main
Process: com.app.test, PID: 4857
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { typ=image/jpeg }} to activity {com.app.test/com.app.test.newActivity.activities.TestActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Parcelable android.os.Bundle.getParcelable(java.lang.String)' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:3574)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3617)
at android.app.ActivityThread.access$1300(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1352)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Parcelable android.os.Bundle.getParcelable(java.lang.String)' on a null object reference
at com.app.test.newActivity.activities.TestActivity.onActivityResult(TestActivity.java:127)
at android.app.Activity.dispatchActivityResult(Activity.java:6192)
at …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,捕获按钮用于使用设备摄像头捕获图像,因此我在该按钮的单击事件上使用了方法captureImage().当我单击按钮时,抛出空指针异常.我无法理解发生这种事可以有人帮忙吗 提前致谢!
在Create()方法上捕获按钮
photoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);*/
captureImage();
}
});
Run Code Online (Sandbox Code Playgroud)
captureImage()方法
private void captureImage() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
// start the image capture Intent
startActivityForResult(intent, CAMERA_REQUEST);
}
Run Code Online (Sandbox Code Playgroud)
此方法上的空指针异常
public Uri getOutputMediaFileUri(int type) {
return Uri.fromFile(getOutputMediaFile(type));
}
/**
* returning image / video
*/
private static File getOutputMediaFile(int type) {
// External sdcard location
File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), …Run Code Online (Sandbox Code Playgroud) 我在尝试通过意图拍照时遇到一个非常奇怪的错误。活动代码(略有简化):
private void startCapture() throws IOException {
// Create output file
final File photoFile = makePhotoFile();
_photoPath = photoFile.getAbsolutePath();
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
/* IMPORTANT NOTE TO READERS
* As of Android N (which went out shortly after I posted this question),
* you cannot use Uri.fromFile this way anymore.
* You should use a FileProvider. */
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
if (cameraIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(cameraIntent, REQUEST_CODE_IMAGE_CAPTURE);
}
else {
deleteCurrentPhoto();
}
}
private File makePhotoFile() throws IOException {
String …Run Code Online (Sandbox Code Playgroud) android android-intent android-camera android-camera-intent android-file
我正在尝试拍照并将其保存到自定义位置-
public void SavePhoto(View view){
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "WorkingWithPhotosApp");
imagesFolder.mkdirs();
File image = new File(imagesFolder, "QR_" + timeStamp + ".png");
Uri uriSavedImage = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
startActivityForResult(imageIntent, REQUEST_IMAGE_CAPTURE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(data==null){
Toast.makeText(MainActivity.this, "Data is null", Toast.LENGTH_SHORT).show();
}
else{
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
ImageView mImageView=(ImageView)findViewById(R.id.imageView); …Run Code Online (Sandbox Code Playgroud)