相关疑难解决方法(0)

以纵向模式拍照的setRotation(90)对三星设备不起作用

根据该文件,setRotation(90)应旋转拍摄的JPEG图片(takePicture在横向模式.

这在HTC手机上运行良好,但在三星Google Nexus S和三星Galaxy S3上无效.这是一个错误吗?

我知道我可以使用矩阵变换旋转,但希望操作系统可以更有效地执行此操作,并且不希望在某些其他设备上存在过度旋转的风险.

编辑

设置camera.setDisplayOrientation(90);使预览处于纵向模式,但它对拍摄的照片没有任何影响.

此外,另外setRotation,我也试图设置图片大小-在我翻转hw:parameters.setPictureSize(1200, 1600);.这也没有任何影响.

显然,三星手机设置了EXIF方向标签,而不是旋转单个像素.如ariefbayu建议的那样,使用Bitmap BitmapFactory不支持此标记.他的代码示例是解决方案,此解决方案也与使用兼容inSampleSize.

android android-camera

36
推荐指数
1
解决办法
3万
查看次数

将相机预览旋转到Portrait Android OpenCV相机

我正在尝试使用OpenCV 2.4.3.2创建一个相机应用程序并进行一些opencv处理.我希望它能够有多个UI方向,而不仅仅是Landscape.

问题是,当我将方向更改为纵向时,图像会侧向出现.

我知道我可以在进行图像处理之前旋转输入图像(因此只将方向保留为横向),这很好并且有效,但是没有解决我的其他UI将处于错误方向的问题.

我也尝试使用这段代码来旋转相机90deg,但它似乎没有用.

mCamera.setDisplayOrientation(90);
Run Code Online (Sandbox Code Playgroud)

它要么没有效果,要么有时只会导致预览变黑

有人用OpenCV成功完成了这项工作吗?我的类扩展自JavaCameraView. 侧面预览的肖像图像

编辑

我做了一些改进,就是我在OpenCV中旋转了图像,因为它在CameraBridgeViewBase.java类中显示.

在交付和绘制框架方法中:

if (canvas != null) {
            canvas.drawColor(0, android.graphics.PorterDuff.Mode.CLEAR);
            //canvas.drawBitmap(mCacheBitmap, (canvas.getWidth() - mCacheBitmap.getWidth()) / 2, (canvas.getHeight() - mCacheBitmap.getHeight()) / 2, null);
            //Change to support portrait view
            Matrix matrix = new Matrix();
            matrix.preTranslate((canvas.getWidth() - mCacheBitmap.getWidth()) / 2,(canvas.getHeight() - mCacheBitmap.getHeight()) / 2);

            if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
                matrix.postRotate(90f,(canvas.getWidth()) / 2,(canvas.getHeight()) / 2);
            canvas.drawBitmap(mCacheBitmap, matrix, new Paint());
Run Code Online (Sandbox Code Playgroud)

...基本上,这只是像输入图像一样

输入图像旋转90

这样更好,但我显然希望这是全屏.

android opencv android-camera

36
推荐指数
6
解决办法
3万
查看次数

相机:setDisplayOrientation功能不适用于Android 2.3.6的三星Galaxy ACE

我试图创建一个简单的相机应用程序进行研究.我阅读Android Camera Official Document然后开始编码.所以我做了一些步骤让它发挥作用

1.在应用中添加了相机功能所需的权限.

2.我的活动仅限于PORTRAIT模式.

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

3.增加了几个相机回调以使我的相机工作.

  • SurfaceHolder.Callback,
  • Camera.PreviewCallback
  • AutoFocusCallback
  • ShutterCallback
  • PictureCallback用于RAW图像数据
  • PictureCallback用于JPG图像数据

4.In surfaceChanged方法,我自定义相机设置.到目前为止,我已经为几乎所有Android设备工作了

  • LG
  • 香料
  • 三星
  • HTC
  • 福邦
  • 索尼
  • 摩托罗拉
  • 谷歌Nexus系列.

随后我在Android版2.3.6的三星Galaxy ACE上进行了测试,发现Camera Display Preview已转为横向模式.

因此,在记录了log-cat/break点后,我发现下面的方法对于这个特定的模型不起作用

//This method is not working for Samsung Galaxy ACE
 camera.setDisplayOrientation(90); 
//or 
parameters.set("orientation", "portrait");
//or
parameters.setRotation(90);
Run Code Online (Sandbox Code Playgroud)

注意: 我在Google和SO上搜索了大量解决方案,但到目前为止还没有任何运气

供您参考我的示例代码如下

@Override
    public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
        Log.v(TAG, "surfaceChanged get called"); …
Run Code Online (Sandbox Code Playgroud)

camera android portrait android-camera samsung-mobile

20
推荐指数
1
解决办法
2万
查看次数

android相机预览错误的宽高比

我根据教程创建了一个相机应用程序.我使用的预览类来自api-Demos"CameraPreview".我从这里添加了一个修改(预览总是旋转90°).这就是我设置预览大小的方法:

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
    // Now that the size is known, set up the camera parameters and begin
    // the preview.
    Camera.Parameters parameters = mCamera.getParameters();
    Display display = ((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();

    if (display.getRotation() == Surface.ROTATION_0) {
        parameters.setPreviewSize(mPreviewSize.height, mPreviewSize.width);
        mCamera.setDisplayOrientation(90);
    }

    if (display.getRotation() == Surface.ROTATION_90) {
        parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
    }

    if (display.getRotation() == Surface.ROTATION_180) {
        parameters.setPreviewSize(mPreviewSize.height, mPreviewSize.width);
    }

    if (display.getRotation() == Surface.ROTATION_270) {
        parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
        mCamera.setDisplayOrientation(180);
    }
    parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);

    requestLayout();

    mCamera.setParameters(parameters);
    mCamera.startPreview();
} …
Run Code Online (Sandbox Code Playgroud)

android android-camera

17
推荐指数
2
解决办法
3万
查看次数

Android:相机预览的屏幕方向/旋转

我创建了一个相机应用程序,我希望我的应用程序可以在所有4种可能的方向上转动,并相应地更新相机预览.因为我使用了以下我复制过的方法: Android - 相机预览是横向的

 public void updateCameraDisplay(int w, int h) {
        // set preview size and make any resize, rotate or
        // reformatting changes here

        Log.i("CameraPreviews", "Updating camera orientation with w=" + w
                + " and h=" + h);
        Parameters parameters = camera.getParameters();
        Display display = getActivity().getWindowManager()
                .getDefaultDisplay();

        int rotation = getActivity().getResources().getConfiguration().orientation;
        Log.i("CameraPreviews", "rotation is " + display.getRotation());
        if (display.getRotation() == Surface.ROTATION_0) {

            parameters.setPreviewSize(h, w);
            camera.setDisplayOrientation(0);
        }

        if (display.getRotation() == Surface.ROTATION_90) {
            parameters.setPreviewSize(w, h);
            camera.setDisplayOrientation(270);
        }

        if (display.getRotation() == Surface.ROTATION_180) …
Run Code Online (Sandbox Code Playgroud)

camera android orientation

14
推荐指数
1
解决办法
8649
查看次数

Android相机定位问题

以垂直格式拍摄的照片以横向格式保存,反之亦然.我使用这个意图使用Android相机

Intent captureImage = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
captureImage.putExtra(MediaStore.EXTRA_OUTPUT, imageFileUri);               
startActivityForResult(captureImage, CAMERA_PIC_REQUEST);
Run Code Online (Sandbox Code Playgroud)

onActivityResult()我只是将图像URL保存到我的数据库并在列表视图中显示它.但是有了方向性的变化.如果我从图库中选择图像并保存它,也会发生同样的情况.

我想要拍摄照片的方向.我不想改变它.有没有人对此有解决方法.

android

9
推荐指数
1
解决办法
4724
查看次数

如何确定摄像机预览帧的默认方向?

我正在尝试(再次)创建实际上正常工作的相机预览逻辑,适用于所有场景:

  • 任何设备:手机,平板电脑,烤面包机,等等
  • 任何相机:前向,后向,侧向,面向狗,等等
  • android.hardware.Cameraandroid.hardware.camera2
  • 肖像和风景设备方向

因为我minSdkVersion15岁,因为我并不特别关心表现,所以我试图用一个TextureView.并且,根据fadden在这里这里的地方的建议,我试图setTransform()TextureView适当的情况下使用Matrix它:

  • 正确定位预览,考虑设备方向
  • TextureView完全填充,以TextureView纵横比与预览帧宽高比不匹配的裁剪为代价
  • 不会拉伸图像,因此预览正方形项目(例如,3"方形Post-ItNote®)会在预览中显示正方形

在我的情况下,TextureView填充屏幕,减去状态栏和导航栏.

adjustAspectRatio()GrafikaPlayMovieActivity.java开始,我现在有:

  private void adjustAspectRatio(int videoWidth, int videoHeight,
                                 int rotation) {
    if (iCanHazPhone) {
      int temp=videoWidth;
      videoWidth=videoHeight;
      videoHeight=temp;
    }

    int viewWidth=getWidth();
    int viewHeight=getHeight();
    double aspectRatio=(double)videoHeight/(double)videoWidth;
    int newWidth, newHeight;

    if (getHeight()>(int)(viewWidth*aspectRatio)) {
      newWidth=(int)(viewHeight/aspectRatio);
      newHeight=viewHeight;
    }
    else {
      newWidth=viewWidth;
      newHeight=(int)(viewWidth*aspectRatio);
    }

    int xoff=(viewWidth-newWidth)/2;
    int yoff=(viewHeight-newHeight)/2;

    Matrix …
Run Code Online (Sandbox Code Playgroud)

android android-camera textureview android-textureview

9
推荐指数
1
解决办法
4653
查看次数

android camera setDisplayOrientation(90)在不同的设备中失败

我的相机应用程序有问题.相机活动处于纵向模式.所以我给了

camera.setDisplayOrientation(90);
Run Code Online (Sandbox Code Playgroud)

根据SO中的不同帖子,这将在纵向模式下正常工作.

但它不能正常使用不同的设备.问题是,预览向左或向右旋转90度.在Htc中没关系.但是对于Galaxy系列,它不起作用.

谁能帮我 ?

android orientation android-camera

8
推荐指数
1
解决办法
5808
查看次数

相机在纵向模式下伸展

我试图将相机放在Android手机上的纵向SurfaceView中.我使用http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html将相机放入surfaceView.然而,相机旋转90度,所以我尝试使用setDisplayOrientation(90)来修复它,但这会压缩图像(它可能没有正确调整SurfaceView的大小?).我该怎么做才能让相机不被挤压?

camera android orientation

6
推荐指数
1
解决办法
8058
查看次数

强制相机始终在Android中以纵向模式打开

是否可以仅在纵向模式下在Android中打开Camera Intent,即使用户翻转设备,相机仍将处于纵向模式,

我尝试了以下答案:强制人像模式,但没有工作,谢谢

android android-intent android-camera

6
推荐指数
1
解决办法
1万
查看次数

Android上的相机方向

你好朋友.我正在创建一个使用相机代码的Android应用程序.我用过android-API 2.1.我在戴尔手机上安装了我的应用程序,相机的方向是正确的.但是,我在三星Galaxy S2等其他Android手机中安装了我的应用程序.这里,问题在于相机方向,即使在纵向模式下相机旋转90度.任何人都可以建议我是否需要更改任何相机参数,以便相机方向适用于所有手机...?这是我的代码:

//class CameraDemo
public class CameraDemo extends Activity {
private static final String TAG = "CameraDemo";
Camera camera;
Preview preview;
Button buttonClick;
Button next;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
try
{

super.onCreate(savedInstanceState);
setContentView(R.layout.camdemo);

preview = new Preview(this);
((FrameLayout) findViewById(R.id.preview)).addView(preview);

buttonClick = (Button) findViewById(R.id.buttonClick);
next = (Button) findViewById(R.id.next);
buttonClick.setOnClickListener( new OnClickListener() {
public void onClick(View v) {

preview.camera.takePicture(shutterCallback, rawCallback, jpegCallback);

try{

Constants.takepic=1;

buttonClick.setEnabled(false); //once click is clicked, its disable …
Run Code Online (Sandbox Code Playgroud)

camera android orientation

5
推荐指数
1
解决办法
5125
查看次数

mediavieworder更改了mediarecorder.Start()

这个问题类似于这里,这里,这里,这里这里的帖子,但我被困住了,花了好几个小时试图解决它.

我有一个摄像机预览(现在总是以正确的方向显示),但是当我点击记录(mediaRecorder.start();)时,视频方向会改变.我尝试过使用setOrientationHint,但它似乎没有什么区别(如下面代码中的注释所标记).

它会影响我的测试设备(Galaxy和Jelly Bean上的Xperia).我该怎么做才能解决这个问题?

这是我的代码:

XML

<RelativeLayout android:id="@+id/surface_camera"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_centerInParent="true"
    android:layout_weight="1"
    >

    <RelativeLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <FrameLayout
            android:id="@+id/videoview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"/>
        <Button
            android:id="@+id/mybutton"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            android:text="REC"
            android:textSize="12dp"/>
    </RelativeLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

Java的

package hockeyj.androidlisttesting;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.app.Activity;
import android.content.Context;
import android.hardware.Camera;
import android.media.CamcorderProfile;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.Display;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button; …
Run Code Online (Sandbox Code Playgroud)

android android-camera android-mediarecorder

4
推荐指数
1
解决办法
5062
查看次数

如何在opencv中将矩形放置在相机框架的中心

我以这种方式采用mRGBA下的当前帧:

mRgba = inputFrame.rgba();
Run Code Online (Sandbox Code Playgroud)

然后创建一个矩形对象,它取当前相机框架的高度和宽度

rect = new Rect();
rect.width = mRgba.width();
rect.height = mRgba.height();
Run Code Online (Sandbox Code Playgroud)

它需要整个框架的空间,但当我试图收缩这个矩形时,它在一侧收缩(不是我需要的整体)

所以我试图找到矩形中心,然后尝试根据该中心和预定义的大小创建另一个矩形

int x = (int) (rect.tl().x + rect.br().x)/2;
int y = (int) (rect.tl().y + rect.br().y)/2;

Rect rect1 = new Rect(x,y,280,280);

Imgproc.rectangle(mRgba, rect1.tl(), rect1.br(), new Scalar(255, 0, 0), 2, 8, 0);
Run Code Online (Sandbox Code Playgroud)

但它不在中心!! 我不确定矩形对象采取的参数我没有找到opencv的文件非常有用.那么如何克服这种情况我希望矩形正好位于相机框架的中心.

矩形不在中心

android opencv

1
推荐指数
1
解决办法
3242
查看次数