我正在捕捉图像并将其设置为图像视图.
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) 我试图创建一个简单的相机应用程序进行研究.我阅读Android Camera Official Document然后开始编码.所以我做了一些步骤让它发挥作用
1.在应用中添加了相机功能所需的权限.
2.我的活动仅限于PORTRAIT模式.
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
3.增加了几个相机回调以使我的相机工作.
4.In surfaceChanged方法,我自定义相机设置.到目前为止,我已经为几乎所有Android设备工作了
但随后我在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) 我使用下面的代码录制视频并且录制完美,但是当它播放视频时,它会颠倒播放.
我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) 我在那里看过很多帖子?但我找不到正确答案.
我尝试做一些事情:
@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 和 OpenGL 的新手。
我使用代码在屏幕上显示 Android 相机预览。我想在下面的“MainRenderer”类中使用 OpenGL 2.0(以匹配我的相机的纵向分辨率,因为我的应用程序处于纵向模式)将相机角度旋转 90 度。我已经研究过Android 相机旋转,但它没有执行旋转。
在布局 xml 中设置“android:rotation='90'”会旋转表面视图但会产生黑色表面 - 没有相机预览。
由于我使用 GLSurfaceView,我现在希望通过执行矩阵旋转和纵横比调整来实际旋转 OpenGL 2.0 中的相机预览。像如何在 OpenGL 2.0 ES 和http://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)