相关疑难解决方法(0)

如何获取Android设备的CURRENT方向(ActivityInfo.SCREEN_ORIENTATION_*)?

我想找出一个装置的详细取向,优选的一个SCREEN_ORIENTATION_LANDSCAPE,SCREEN_ORIENTATION_PORTRAIT,SCREEN_ORIENTATION_REVERSE_LANDSCAPE,SCREEN_ORIENTATION_REVERSE_PORTRAITActivityInfo或等同物.

StackOverflow中的一些答案包括在内

getWindowManager().getDefaultDisplay().getRotation()
Run Code Online (Sandbox Code Playgroud)

但这并没有真正告诉我该设备是处于纵向还是横向模式,只是它是如何根据其自然位置转动的 - 而这反过来可以是风景或肖像.

getResources().getConfiguration().orientation
Run Code Online (Sandbox Code Playgroud)

返回以下三种:ORIENTATION_LANDSCAPE,ORIENTATION_PORTRAIT,ORIENTATION_SQUARE,然后并没有真正告诉我哪种方式手机处于开机状态(无论是上下颠倒或两侧的它的转向).

我知道我可以结合使用后者DisplayMetrics来找出设备的自然方向,但是真的没有更好的方法吗?

android screen-orientation

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

使SurfaceView大于屏幕(将相机预览适合大于显示器的SurfaceView)

我有一个自定义相机应用程序,我想要任何预览尺寸以全屏模式显示它而不拉伸相机预览图像.对于这一点,我需要做的surfaceView大于屏幕,以保持宽高比,所以实际上用户将看到小于照相机实际拍摄.

出于某种原因,我无法使SurfaceView屏幕尺寸大于屏幕尺寸.

到目前为止我尝试过的:

  • 调整surfaceChanged方法中的相机预览

  • 调整on onMeasure方法中的相机预览

  • 方法中调整大小onLayout
  • 添加FLAG_LAYOUT_NO_LIMITS到活动 - 信息
  • 添加android:clipChildren 用于表面视图 - 信息
  • 在xml中设置宽度: android:layout_width="852px"
  • getWindow().setLayout(852, 1280); 在活动中

但是没有任何成功 - 每次的行为都是一样的:它看起来好一秒钟,然后就会拉长.

这是代码:

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {

    private static final int CAMERA_ROTATE_ANGLE = 90;

    private SurfaceHolder cameraHolder;
    private Camera androidHardCamera;
    private Context context;

    public CameraPreview(Context context) {
        super(context);
        this.context = context;

        // Install a SurfaceHolder.Callback so we get notified when the
        // underlying surface is …
Run Code Online (Sandbox Code Playgroud)

android surfaceview android-camera android-fullscreen

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

相机: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中遇到摄像头输入问题.在网上搜索了半天之后,我再也没有了.

我希望在这个阶段实现的Wat正确显示当前的摄像头输入.现在没有更多,也没有更少.将设备保持在横向模式时,一切似乎都很好.但是,只要我将设备切换为纵向,显示器就会水平缩放,以匹配设备屏幕的宽度.

为了更清楚地澄清这个问题,我附上了两张照片:

似乎这个问题也出现在API示例中的相机示例中,但是当我从我的设备使用相机应用程序时似乎不会发生这种情况.显然,其他事情正在发生.

我正在使用的代码基于可以在互联网上找到并且没有修改的示例:

class Preview extends SurfaceView implements SurfaceHolder.Callback {
    SurfaceHolder mHolder;
    Camera mCamera;

    Preview(Context context) {
        super(context);
        mHolder = getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder holder) {
        mCamera = Camera.open();
        try {
            mCamera.setPreviewDisplay(holder);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        mCamera.stopPreview();
        mCamera = null;
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        Camera.Parameters parameters = mCamera.getParameters();
        parameters.setPreviewSize(w, h);
        mCamera.setParameters(parameters); …
Run Code Online (Sandbox Code Playgroud)

android

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