我有一个像这样启动相机意图的活动(没什么特别的):
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File photo = new File(Environment.getExternalStorageDirectory(), filename);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
Uri imageUri = Uri.fromFile(photo);
startActivityForResult(intent, CAMERA_REQUEST);
Run Code Online (Sandbox Code Playgroud)
比我得到结果onActivityResult()并将位图设置为 ImageView。再次,没什么特别的。
问题是相机应用程序始终处于横向状态。因此,如果用户在点击 OK 将设备发送回我的 Activity 时将设备保持在水平方向,而我的 Activity 之前是纵向的,那么它会使我的 Activity 崩溃,因为它必须重建它。如果在相机中点击“确定”之前将设备倾斜至纵向,则它不会崩溃。我该如何解决这个问题?
我正在通过默认相机活动(使用)拍摄高分辨率照片intent.put Extras,并将其保存到 SD 卡,
代码:
public class CameraActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
Button takepicture ;
ImageView iv ;
TextView tv;
Button show;
String filepath;
Intent i;
Uri mUri;
final static int cameraData = 0;
File folder = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
takepicture = (Button) findViewById(R.id.button1);
iv = (ImageView) findViewById(R.id.imageView1);
tv = (TextView) findViewById(R.id.textView1);
show = (Button) findViewById(R.id.button2);
takepicture.setOnClickListener(this);
show.setOnClickListener(this);
}
@Override
public void …Run Code Online (Sandbox Code Playgroud) 所以我正在创建和使用相机API的应用程序.该应用程序即将完成它只需要添加一些功能.但是,当我尝试在模拟器或我的手机上从eclipse启动应用程序时,它会创建一个运行时错误,指出无法恢复活动:无法连接到相机服务.我尝试了多个模拟器,是的,相机选项已打开.我很困惑,为什么它在导出为apk并安装在我的手机上时运行完美但在我尝试调试它或模拟器形式eclipse时不起作用.有任何想法吗?因为我现在不可能错误地跟踪.我看过很多与无法连接到相机服务相关的帖子,但没有运气适用于我的情况.
旁注:此外,相机过去工作正常,几天前运行这个确切的应用程序,没有任何麻烦.我的想法是它与eclipse有关.由于从apk运行时,应用程序在我的手机上完美运行
更新:我卸载了eclipse并重新安装它,同样的错误仍在发生.怎么了?当我在eclipse ahhg中运行它时,这段代码不起作用
我的LogCat:
05-27 22:20:55.197: E/AndroidRuntime(419): FATAL EXCEPTION: main
05-27 22:20:55.197: E/AndroidRuntime(419): java.lang.RuntimeException: Unable to resume activity {com.fuchs.frontcam/com.fuchs.frontcam.MainActivity}: java.lang.RuntimeException: Fail to connect to camera service
05-27 22:20:55.197: E/AndroidRuntime(419): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2120)
05-27 22:20:55.197: E/AndroidRuntime(419): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135)
05-27 22:20:55.197: E/AndroidRuntime(419): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1668)
05-27 22:20:55.197: E/AndroidRuntime(419): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-27 22:20:55.197: E/AndroidRuntime(419): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
05-27 22:20:55.197: E/AndroidRuntime(419): at android.os.Handler.dispatchMessage(Handler.java:99)
05-27 22:20:55.197: E/AndroidRuntime(419): at android.os.Looper.loop(Looper.java:123)
05-27 22:20:55.197: E/AndroidRuntime(419): at android.app.ActivityThread.main(ActivityThread.java:3683)
05-27 22:20:55.197: E/AndroidRuntime(419): at java.lang.reflect.Method.invokeNative(Native Method)
05-27 22:20:55.197: E/AndroidRuntime(419): at java.lang.reflect.Method.invoke(Method.java:507) …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 android 相机应用程序,但由于闪光灯的高亮度,一切似乎都是白色的。该怎么办。?1 英尺远是我的物体我必须用相机的闪光灯作为手电筒模式捕捉物体。如何降低闪光强度?
注意我是 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) 我有一个代码示例:
mediaRecorder = new MediaRecorder();
mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
mediaRecorder.setCamera(camera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_480P));
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,以及 CamcorderProfile.QUALITY_LOW
但是当我尝试获取 360p 视频并使用 CamcorderProfile.QUALITY_CIF (int = 3) 时,我在 Sony Xperia Z3 (android 6.0.1) 中出现错误
MediaProfiles: The given camcorder profile camera 0 quality 3 is not found
System.err: java.lang.RuntimeException: Error retrieving camcorder profile params
System.err: at android.media.CamcorderProfile.native_get_camcorder_profile(Native Method)
System.err: at android.media.CamcorderProfile.get(CamcorderProfile.java:471)
System.err: at android.media.CamcorderProfile.get(CamcorderProfile.java:402)
<...>
Run Code Online (Sandbox Code Playgroud)
AOSP 测试套件还没有测试 SDK 相机质量常数吗?我可以在生产中使用哪些常量并期望所有手机(至少从 5.0 开始)都支持它?
我有一个片段,我在其中填充了一个 RecyclerView,一个帖子包含一个相机,我需要在拍照时获取它带来的信息。我不知道怎么做。
请帮忙。
这是我的代码:
后适配器.java
public HeaderViewHolder (View itemView) {
super (itemView);
this.mCamera = (ImageView) itemView.findViewById(R.id.ivCamera);
mCameraPhoto = new CameraPhoto(itemView.getContext());
this.mCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
((Activity) v.getContext()).startActivityForResult(mCameraPhoto.takePhotoIntent(), CAMERA_REQUEST_ASIST);
}catch (Exception e){
Log.e("Error camera permission", e.getMessage());
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
主活动.java
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
String photoPath = mCameraPhoto.getPhotoPath();
for (Fragment fragment : getSupportFragmentManager().getFragments()) {
fragment.onActivityResult(requestCode, resultCode, data);
Log.d("Result in fragment",":D --> "+photoPath);
}
}
Run Code Online (Sandbox Code Playgroud)
我的片段
public void onActivityResult(int requestCode, …Run Code Online (Sandbox Code Playgroud) 我正在尝试允许用户在 react-native 应用程序中上传视频,但我什至无法访问相机。
** 不使用世博会。我使用了 react-native cli 并使用了 react-native-init 来生成我的项目 **
** 使用本机版本 0.53.0。安卓版本 5.1 **
** 更新:经过一些好的建议,我已将 android/app/build.gradle 文件中的 compileSdkVersions 和 targetSdkVersions 更改为 > 23,并且知道问题不在于我的权限。此外,已弃用的 RCTCamera 版本的 react-native-camera 工作正常,我能够捕获静止图像和视频并将它们保存到设备中。只有使用 RNCamera 的主版本在每次屏幕加载时仍然使应用程序崩溃:/
这不太理想,因为我不想在我的应用程序中有弃用的代码。所以当我在下面提到 react-native-camera 时,我指的是使用 RNCamera 而不是 RCTCamera 的当前版本。**
我尝试使用 react-native-camera 包(https://github.com/react-native-community/react-native-camera),但这会导致我的应用程序每次都崩溃。另外,我想使用用户已经安装的相机应用程序,而不必构建我自己的相机视图,这正是 react-native-camera 所需要的。
环顾四周,我偶然发现了三种有前途的方法来解决这个问题:
1) 链接 - 据我从这篇 StackOverflow 帖子中了解到(React native 向特定的 whatsapp Number 2发送消息)链接可用于打开用户在其设备上拥有的其他应用程序。我认为这也可用于访问相机应用程序。但我没有找到任何关于这方面的信息。如何检查用户是否有相机应用程序,然后链接到他们?理想情况下,用户手机上会出现一个弹出菜单,要求用户从可用的相机应用程序列表中进行选择以供使用。
2) 来自 android 开发人员文档的这篇文章 - https://developer.android.com/training/camera/videobasics.html。这描述了如何准确地做我想做的事情,但是我在制作用于我的组件的本机模块时遇到了麻烦。我对在 react-native 中构建桥梁有非常基本的了解,并且只有在阅读了几篇列出所有代码的文章后才能使一个简单的本地 Toast 模块工作。那么任何人都可以编写一个 VideoModule.java 文件来实现与 android 文档指定的相同功能吗?这对我来说似乎是最简单的解决方案,但我对 Java/android 缺乏了解阻碍了我。
3) ReactNativeWebRTC …
android android-camera webrtc react-native react-native-native-module
我正在开发一个项目,该项目使用 CameraX 在TextureView. 代码来自这个codelab。我已经使用该setOnPreviewOutputUpdateListener()方法更新TextureView.
private fun startCamera() {
val previewConfig = PreviewConfig.Builder().apply {
setTargetAspectRatio( Rational( 1 , 1 ) )
setTargetResolution( Size( 640 , 640 ) )
}.build()
val preview = Preview( previewConfig )
preview.setOnPreviewOutputUpdateListener {
val parent = cameraTextureView?.parent as ViewGroup
parent.removeView( cameraTextureView )
cameraTextureView?.surfaceTexture = it.surfaceTexture
parent.addView( cameraTextureView , 0)
updateTransform()
}
preview.removePreviewOutputListener()
CameraX.bindToLifecycle( this , preview )
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何byte[]使用 CameraX 从预览帧中获取原始对象。我期待类似于onPreviewFrame(byte[] data, Camera camera)方法的东西。
基本上,我想要使用 …
我们连接到https://meet.jit.si进行视频会议。如果我们在 Android 设备上使用 chrome 浏览器(在 Android 7 和 10 上测试),我们可以在启用相机和麦克风的情况下加入。也可以打开和关闭它们。但是,如果我们使用 webview 尝试相同的操作,我们甚至不会从网站收到允许访问的提示,并在尝试打开它们时出现“无法访问摄像头/麦克风”错误。
这是我们的代码。
显现
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Run Code Online (Sandbox Code Playgroud)
获取加载运行时权限
String[] permissions =
{Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.INTERNET,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.CAMERA};
ActivityCompat.requestPermissions(
this,
permissions,
1010);
Run Code Online (Sandbox Code Playgroud)
将网页加载到 WebView
String url = "https://meet.jit.si/testingconf49854";
WebView webView = findViewById(R.id.webView);
WebSettings mWebSettings = webView.getSettings();
mWebSettings.setLoadsImagesAutomatically(true);
mWebSettings.setBlockNetworkLoads(false);
mWebSettings.setJavaScriptEnabled(true);
mWebSettings.setLoadWithOverviewMode(true);
mWebSettings.setUseWideViewPort(false);
mWebSettings.setTextZoom(70);
mWebSettings.setCacheMode( WebSettings.LOAD_NO_CACHE );
mWebSettings.setUserAgentString("Mozilla/5.0 (Linux; Android 5.1.1; Nexus 5 Build/LMY48B; wv) AppleWebKit/537.36 (KHTML, …Run Code Online (Sandbox Code Playgroud) android ×10
android-camera ×10
eclipse ×1
java ×1
opengl-es ×1
react-native ×1
rotation ×1
webrtc ×1
webview ×1