我有两个选项"选择照片"和"拍照" - 我的选择照片功能完全正常,但拍照时出现问题.主要是保存的图像在保存后显示在图像视图中.
定义了我的照片位置:
public class photoActivity extends Activity {
private String photoPath;
private ImageView imgView;
{...}
Run Code Online (Sandbox Code Playgroud)
我的相机听众:
bPicFromCam.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
long captureTime = System.currentTimeMillis();
photoPath = Environment.getExternalStorageDirectory() + "/MYAPP" + captureTime + ".jpg";
getPicFromCam(v);
}
else{
Toast.makeText(getApplicationContext(),
"Sorry there is a problem accessing your SDCard, " +
"please select a picture from your gallery instead.", Toast.LENGTH_LONG).show();
}
}
});
Run Code Online (Sandbox Code Playgroud)
然后我的代码启动相机意图(注意photoPath是正确的):
public void getPicFromCam(View view){
System.out.println("photoPath: " + …Run Code Online (Sandbox Code Playgroud) 我想拍一张没有任何预览的照片.我使用了这段代码但是我收到了一个错误:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);
camera.setParameters(parameters);
SurfaceView mview = new SurfaceView(getBaseContext());
try {
camera.setPreviewDisplay(mview.getHolder());
camera.startPreview();
camera.takePicture(null,null,photoCallback);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Camera.PictureCallback photoCallback=new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, new ContentValues());
OutputStream imageFileOS;
try {
imageFileOS = getContentResolver().openOutputStream(uriTarget);
imageFileOS.write(data);
imageFileOS.flush();
imageFileOS.close();
Toast.makeText(AndroidTestJNIActivity.this, "Image saved: " + uriTarget.toString(), Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException …Run Code Online (Sandbox Code Playgroud) 我想将相机预览SurfaceTexture与一些叠加纹理混合.我正在使用这些着色器进行处理:
private final String vss = "attribute vec2 vPosition;\n"
+ "attribute vec2 vTexCoord;\n"
+ "varying vec2 texCoord;\n"
+ "void main() {\n"
+ " texCoord = vTexCoord;\n"
+ " gl_Position = vec4 ( vPosition.x, vPosition.y, 0.0, 1.0 );\n"
+ "}";
private final String fss = "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"
+ "uniform samplerExternalOES sTexture;\n"
+ "uniform sampler2D filterTexture;\n"
+ "varying vec2 texCoord;\n"
+ "void main() {\n"
+" vec4 t_camera = texture2D(sTexture,texCoord);\n"
//+" vec4 t_overlayer = texture2D(filterTexture, texCoord);\n"
//+ …Run Code Online (Sandbox Code Playgroud) 好吧,我这次再次更新了我的问题.
我已经在Galaxy Nexus(JB),Moto-XX(GB),SAMSUNG(Froyo)上逐一测试了以下代码,发生了不同的问题/异常.
public class MainActivity extends Activity {
@SuppressLint("NewApi")
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
System.out.println("shutterCallback");
}
};
PictureCallback rawCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
System.out.println("onPictureTaken");
}
};
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
System.out.println("jpegCallback");
FileOutputStream outStream = null;
try {
System.out.println("jpegCallback begin");
camera.startPreview();
File storagePath = new File("/mnt/sdcard/");
File myImage = new File(storagePath, "example2.jpg"); …Run Code Online (Sandbox Code Playgroud) 看起来如何:http: //i41.tinypic.com/30278m1.png
它看起来像在pic中,我希望它具有正确的长宽比和正确的旋转
请看一下代码,我该如何解决?
这是我的代码:
public class MainActivity extends Activity implements SurfaceHolder.Callback {
Camera mCamera;
SurfaceView mPreview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPreview = (SurfaceView)findViewById(R.id.preview);
mPreview.getHolder().addCallback(this);
mPreview.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mCamera = Camera.open();
}
@Override
public void onPause() {
super.onPause();
mCamera.stopPreview();
}
@Override
public void onDestroy() {
super.onDestroy();
mCamera.release();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
Camera.Parameters params = mCamera.getParameters();
List<Camera.Size> sizes = params.getSupportedPreviewSizes();
Camera.Size selected = sizes.get(0);
params.setPreviewSize(selected.width,selected.height);
mCamera.setParameters(params);
mCamera.startPreview();
} …Run Code Online (Sandbox Code Playgroud) 我正在自动化android中的一个视频应用程序.为了做到这一点,我需要将视频分辨率设置为最高.
我知道在常规相机中,我可以设置值
/data/data/com.android.gallery3d/shared_prefs/com.android.gallery3d_preferences_0.xml
Run Code Online (Sandbox Code Playgroud)
但我在那里设置的值只是为摄像机而不是为视频设置.知道视频分辨率值存储在哪里吗?
如果有任何ADb命令来存储视频编码分辨率,那么它会更好.
以下是我使用的adb命令,但似乎无法工作:
adb shell am start -a android.media.action.VIDEO_CAPTURE --ei android.intent.extras.CAMERA_FACING 1 --ei android.intent.extras.EXTRA_VIDEO_QUALITY 1 -n com.android.gallery3d/com.android.camera.CameraActivity
Run Code Online (Sandbox Code Playgroud)
我最近也发现了
/data/data/com.android.gallery3d/shared_prefs/com.android.gallery3d_preferences_0.xml
Run Code Online (Sandbox Code Playgroud)
文件包含最高分辨率的值,键名称为:"pref_video_quality_key"但不知何故,它只设置了相机值并且不执行前置摄像头值
在我的相机应用程序中,当用户点击屏幕时,我使用以下代码触发自动对焦:
mCamera.autoFocus(null);
Run Code Online (Sandbox Code Playgroud)
我还允许用户在选项屏幕中设置相机闪光模式.问题在于,当触发自动对焦时,相机闪光灯有时会在某些手机上触发,用户会抱怨这一点.在大多数这些手机上,可以通过将闪光模式设置为来避免这种情况Parameters.FLASH_MODE_OFF.我已经在Galaxy S2上验证了这一点,但在某些手机(例如Nexus 4)上,它仍然会发生(根据用户报告).
触发自动对焦时,如何可靠地防止相机闪光灯开启?可能吗?
您好我在使用Android Camera API编写相机应用程序!
它具有以下功能:
以下是用于拖放图像视图的代码:
@Override
public boolean onTouch(View view, MotionEvent event) {
final int X = (int) event.getRawX();
final int Y = (int) event.getRawY();
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
_xDelta = X - lParams.leftMargin;
_yDelta = Y - lParams.topMargin;
break;
case MotionEvent.ACTION_UP:
xloc=X;
yloc=Y;
Toast.makeText(getContext(), "Location==="+Integer.toString(xloc)+"==="+Integer.toString(yloc), Toast.LENGTH_SHORT).show();
break;
case MotionEvent.ACTION_POINTER_DOWN:
break;
case MotionEvent.ACTION_POINTER_UP:
break;
case MotionEvent.ACTION_MOVE:
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view
.getLayoutParams();
layoutParams.leftMargin = X - _xDelta;
layoutParams.topMargin …Run Code Online (Sandbox Code Playgroud) 目前我正在研究谷歌人脸检测API,API我能够检测到人类完整的脸(眼睛,鼻子和其他部位),并且根据这个概念,我已经开发了一个应用程序,如果你站在前脸摄像头前面那么它会检测到你的脸并显示一些手势.
Context context = Applications.getAppContext();
FaceDetector detector = new FaceDetector.Builder(context)
.setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)
.build();
detector.setProcessor(
new MultiProcessor.Builder<>(new GraphicFaceTrackerFactory())
.build());
if (!detector.isOperational()) {
}
mCameraSource = new CameraSource.Builder(context, detector)
.setRequestedPreviewSize(640, 480)
.setFacing(CameraSource.CAMERA_FACING_FRONT)
.setRequestedFps(30.0f)
.build();
Run Code Online (Sandbox Code Playgroud)
到目前为止我开发的应用视频链接: -
https://www.dropbox.com/s/097todfu90ic12j/VirtualMirror.mp4?dl=0
应用程序游戏商店链接: -
https://play.google.com/store/apps/details?id=com.twins.virtualmirror
有没有可用的API,我们可以识别人类的其他身体部位(胸部,手部,腿部和身体的其他部位),因为根据Google的愿景,API它只能检测人的面部而不是其他部位.
我想在我的应用程序中加入一个相机功能,这将允许视图本身的布局过渡,更改其大小,预览大小和有效处理方向更改.我应该使用TextureView或SurfaceView?
决定决定..
android ×10
android-camera ×10
surfaceview ×3
api ×1
aspect-ratio ×1
camera-api ×1
image ×1
imageview ×1
opengl-es ×1
overlay ×1
textures ×1
textureview ×1