相关疑难解决方法(0)

为什么在Android上的某些设备上使用相机意图捕获的图像会被旋转?

我正在捕捉图像并将其设置为图像视图.

public void captureImage() {

    Intent intentCamera = new Intent("android.media.action.IMAGE_CAPTURE");
    File filePhoto = new File(Environment.getExternalStorageDirectory(), "Pic.jpg");
    imageUri = Uri.fromFile(filePhoto);
    MyApplicationGlobal.imageUri = imageUri.getPath();
    intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
    startActivityForResult(intentCamera, TAKE_PICTURE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intentFromCamera) {
    super.onActivityResult(requestCode, resultCode, intentFromCamera);

    if (resultCode == RESULT_OK && requestCode == TAKE_PICTURE) {

        if (intentFromCamera != null) {
            Bundle extras = intentFromCamera.getExtras();
            if (extras.containsKey("data")) {
                bitmap = (Bitmap) extras.get("data");
            }
            else {
                bitmap = getBitmapFromUri();
            }
        }
        else {
            bitmap = getBitmapFromUri();
        }
        // …
Run Code Online (Sandbox Code Playgroud)

camera android image rotation android-camera-intent

344
推荐指数
11
解决办法
19万
查看次数

相机: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相机录制视频但播放颠倒

我使用下面的代码录制视频并且录制完美,但是当它播放视频时,它会颠倒播放.

mrec.setOrientationHint(180)之前尝试过设置,mrec.prepare();但没用.任何提示?

import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import android.app.Activity;
import android.hardware.Camera;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;

/**
 * @author SANA HASSAN
 */
public class CameraSurfaceView extends Activity {

    private Preview mPreview;
    private MediaRecorder mrec = new MediaRecorder();
    private int cameraId = 0;
    private Camera mCamera;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);

        mPreview = new Preview(this);
        setContentView(mPreview); …
Run Code Online (Sandbox Code Playgroud)

android android-camera

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

如何在没有内存异常的情况下从"onPictureTaken"旋转图片?

我在那里看过很多帖子?但我找不到正确答案.

我尝试做一些事情:

@Override
public void onPictureTaken(byte[] paramArrayOfByte, Camera paramCamera) {
    try {


        Bitmap bitmap = BitmapFactory.decodeByteArray(paramArrayOfByte, 0,
        paramArrayOfByte.length);

        int width = bitmap.getWidth();
        int height = bitmap.getHeight();

        FileOutputStream os = new ileOutputStream(Singleton.mPushFilePath);

        Matrix matrix = new Matrix();
        matrix.postRotate(90);
        Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width,
            height, matrix, false);

        resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 95, os);
        os.close();
        ...
Run Code Online (Sandbox Code Playgroud)

有没有办法旋转图片,而不使用BitmapFactory?我想要旋转图片而不会损失质量!

android bitmap bitmapfactory

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

使用 OpenGL 2.0 API 在 GLSurfaceView 上将 Android 相机预览旋转 90 度

注意我是 Android 和 OpenGL 的新手。

我使用代码在屏幕上显示 Android 相机预览。我想在下面的“MainRenderer”类中使用 OpenGL 2.0(以匹配我的相机的纵向分辨率,因为我的应用程序处于纵向模式)将相机角度旋转 90 度。我已经研究过Android 相机旋转,但它没有执行旋转。

在布局 xml 中设置“android:rotation='90'”会旋转表面视图但会产生黑色表面 - 没有相机预览。

由于我使用 GLSurfaceView,我现在希望通过执行矩阵旋转和纵横比调整来实际旋转 OpenGL 2.0 中的相机预览。像如何在 OpenGL 2.0 EShttp://www.programcreek.com/java-api-examples/index.php?class=android.opengl.Matrix&method=rotateM 中旋转相机视图这样的帖子很少 , 但我无法联系由于我不熟悉 OpenGL(我希望很快熟悉),因此使用以下代码的 API。

我知道也许rotateM 和translateM(猜测使用ModelViewProjection Matrix)可能会做我打算完成的事情。

我想知道下面可能需要更改 vtmp 和 ttmp 吗?

任何帮助表示赞赏。

原始代码来自http://maninara.blogspot.com/2012/09/render-camera-preview-using-opengl-es.html

// 在清单中

< uses-feature android:glEsVersion="0x00020000" android:required="true"/>
< uses-feature android:name="android.hardware.camera"/>
< uses-permission android:name="android.permission.CAMERA"/>
< uses-permission android:name="android.permission.WAKE_LOCK"/>
... android:screenOrientation="landscape" ... // activity property
Run Code Online (Sandbox Code Playgroud)

// 活动

public class MainActivity extends Activity {
  private …
Run Code Online (Sandbox Code Playgroud)

android opengl-es rotation android-camera

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