xamarin判断是否联网_Xamarin.Forms Android 拍照及查看

新建项目

  • 打开Visual Stuido for Mac,选择“文件”>“新建解决方案...”或按“新建项目...”按钮,然后选择“多平台”>“应用”>“空白窗体应用” :
50b817591774a00dca46ba8575e8f399.png

新建项目

843678fd8dcd7113422e08111918a215.png

设置项目名称和目标平台

  • 还原项目缺失的包
1e5465c3d85a9c7b875c299bce945f27.png

还原缺失的包

  • 在Kubim项目上面添加 "Xam.Plugin.Media"包
c13b5a1aaa0f20766041014af5728b53.png

添加视频包文件

构建Xamarin.Forms 代码

  • View: 设置Xamarin.Forms Xaml 页面,在页面添加一个 Button 和 Image 控件。
<?xml version="1.0" encoding="UTF-8"?>#2196F3#96d1ff#999999                
  • ViewModel:
    public class CamaraViewModel :  BaseViewModel    {        //拍照        public ICommand TakeCommand { get; set; }        //图片        private ImageSource image;        public ImageSource ImageSource        {            get { return image; }            set => SetProperty(ref image, value);        }        public CamaraViewModel()        {            Title = "Camara";            TakeCommand = new Command(async () => await TakePhoto());        }        //拍照        async Task TakePhoto()        {                var media = CrossMedia.Current;                //判断摄像头                if (!media.IsCameraAvailable || !media.IsTakePhotoSupported)                {                    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];                }                //获取文件                var file = await media.TakePhotoAsync(new StoreCameraMediaOptions() {                    SaveToAlbum = true //保存到照片库                });                //判断文件是否为空                if (file == null)                {                    return;                }                //解析图片                ImageSource = ImageSource.FromStream(() =>                {                    var stream = file.GetStream();                    file.Dispose(); //释放资源                    return stream;                });            }    }

配置Kubim.Android 项目

  • 在Android的AssemblyInfo.cs中声明权限信息
[assembly: UsesPermission(Android.Manifest.Permission.Internet)][assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)][assembly:UsesPermission(Android.Manifest.Permission.ReadExternalStorage)][assembly: UsesFeature("android.hardware.camera", Required = false)][assembly: UsesFeature("android.hardware.camera.autofocus", Required = false)]
  • 在Android的Resource 下面添加 XML文件
46b70009b742ef9e5e15a7a89ef1ddf3.png

添加xml 文件

<?xml version="1.0" encoding="UTF-8" ?>
  • 在Android的AndroidManifest.xml中的application节点下添加provider 节点。
<?xml version="1.0" encoding="utf-8"?>
  • 在Android的MainActivity.cs中初始化
91046befc5d8c9d91fcbd99695c4c9e5.png

设置初始化

调试应用程序及最终效果

1bcbe46f4fdb39a1bd597045f774e9f5.gif

Android 模拟器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值