我在网站上非常关注教程和答案,但没有成功。花很多时间。
使用媒体。插件
,方法TakePhotoAsync()未打开相机(Genymotion 9.0 API-28 |设备三星j7 prime.android 8.0)。
PickPhotoAsync()
工作精彩。
AndroidManifest。xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.companyname.Pocidadao.fileprovider" android:exported="false" android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
</provider>
文件路径。xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_movies" path="Movies" />
<external-path name="my_images" path="Android/data/com.companyname.Pocidadao/files/Pictures" />
</paths>
汇编信息。反恐精英
[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
[assembly: UsesFeature("android.hardware.camera", Required = false)]
[assembly: UsesFeature("android.hardware.camera.autofocus", Required = false)]
主要活动。反恐精英
protected override async void OnCreate(Bundle savedInstanceState)
{
try
{
...
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
await CrossMedia.Current.Initialize();
CrossCurrentActivity.Current.Init(this, savedInstanceState);
UserDialogs.Init(this);
LoadApplication(new App());
}
catch (Exception ex)
{
Console.WriteLine("EXCEPTION HERE => "+ex);
...
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Android.Content.PM.Permission[] grantResults)
{
Plugin.Permissions.PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
方法XAML。反恐精英
问题在
async void TakePhoto(object sender, EventArgs args)
{
try
{
if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
{
await DisplayAlert("Ops", ":( Nenhuma câmera detectada.", "OK");
return;
}
var cameraStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Camera);
var storageStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage);
if (cameraStatus != PermissionStatus.Granted || storageStatus != PermissionStatus.Granted)
{
var results = await CrossPermissions.Current.RequestPermissionsAsync(new[] { Permission.Camera, Permission.Storage });
cameraStatus = results[Permission.Camera];
storageStatus = results[Permission.Storage];
}
if (cameraStatus == PermissionStatus.Granted && storageStatus == PermissionStatus.Granted)
{
//===HERE IS THE PROBLEM, READ METHOD BUT NOT OPEN CAMERA! NOT ERRORS, NOT EXCEPTION, NOTHING===
var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
{
SaveToAlbum = true,
//Directory = "Sample",
//Name = "test.jpg"
});
if (file == null)
return;
await DisplayAlert("File Location", file.Path, "OK");
if (MyImage.Source == null)
{
Console.WriteLine("MyImage.Source == null ==> OK");
}
MyImage.Source = ImageSource.FromStream(() =>
{
var stream = file.GetStream();
file.Dispose();
return stream;
});
}
else
{
await DisplayAlert("Permissions Denied", "Unable to take photos.", "OK");
}
}
catch (Exception e)
{
Console.WriteLine("EXCEPTION HERE =: "+e);
}
}
对于我的情况,我的清单中缺少这部分代码,请检查一下。
<application android:label="XXX.Android" android:name="android.support.multidex.MultiDexApplication">
<provider android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
</provider>
</application>
我测试了你的代码,这个错误是由文件路径引起的。xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_movies" path="Movies" />
<external-path name="my_images" path="Android/data/com.companyname.Pocidadao/files/Pictures" />
</paths>
如果我将我的_图像的路径更改为
这是我的演示。
https://github.com/851265601/TakePhotoDemo
这是我的演示的GIF。
我正在使用Camera2 API创建自定义相机。我想在使用相机预览保存图像后重新打开相机(继续拍摄图像)。我试图在保存图像后重新打开相机,但显示错误。 android.view.ViewRootImpl$CalledFromWrongThread异常:只有创建视图层次结构的原始线程可以触摸其视图。 开放式摄像法 重新打开相机方法 捕获会话 保存图像方法
我创建了一个主题为“导航抽屉活动”的项目,我想在左侧菜单上有两个选项: null
我试图用Box2D和libgdx制作一个程序,让角色在静态物体(这里是一个圆圈)上跳跃。但是我的相机(跟随动态物体(玩家))一直在下降,即使我的角色按照预期停留在圆圈的顶部。所以我的问题是: 1)为什么我的相机一直在下降,而它应该跟随停留在静态物体顶部的“玩家身体”?2)为什么我的相机在我按Z键时反弹,而不是我的玩家身体? 提前谢谢。您可以尝试在eclipse中运行它,以便更好地理解我的意思,以下
我正在尝试使用在Flutter上,它在Android模拟器上运行完美。但是当我尝试在我的真实设备上使用它时,当我点击按钮打开相机时,它崩溃了,没有给出任何错误。我该如何解决它?我的手机是Android(小米8)。 我的代码:
本文向大家介绍IOS打开系统相机的闪光灯,包括了IOS打开系统相机的闪光灯的使用技巧和注意事项,需要的朋友参考一下 IOS有两种的拍照和视频的方式: 1.直接使用UIImagePickerController,这个类提供了一个简单便捷的拍照与选择图片库里图片的功能。 2.另一种是通过AVFoundation.framework框架完全自定义拍照的界面和选择图片库界面。我只做了第一种,就先给大家介绍
我试图做一个简单的应用程序,使用系统相机应用程序来拍照。我已经在android版本6中测试了我的应用程序,我的应用程序成功打开了设备的摄像头。但在一些android v6设备(如三星Galaxy A3)中,我遇到了以下安全异常: 我已经在我的代码中添加了权限检查: 稍后我称之为捕获图像: 从日志中,我看到captureImage第203行调用了startActivityForResult。既然我已