【发布时间】:2020-12-15 06:33:26
【问题描述】:
如何在我的安卓应用中添加短视频功能?
【问题讨论】:
-
如果回复有帮助,请采纳为答案(点击该答案左上角的“✔”),对有类似问题的其他人有帮助
标签: android visual-studio xamarin.android
如何在我的安卓应用中添加短视频功能?
【问题讨论】:
标签: android visual-studio xamarin.android
首先,您需要将相关的添加到Manifest.xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
在后面的代码中
我们可以使用nuget的插件Media.Plugin来实现这个功能。
using Android;
using Android.Content.PM;
using Plugin.Media;
App首次加载时请求权限。
在 MainActivity -> 创建时
if (!(this.CheckSelfPermission(Manifest.Permission.Camera) == (int)Permission.Granted))
{
RequestPermissions(new string[] { Manifest.Permission.Camera, Manifest.Permission.WriteExternalStorage, Manifest.Permission.ReadExternalStorage }, 0);
}
拍摄视频
//record video
private async void RecordVideoButtonClick(object sender, EventArgs eventArgs)
{
if (this.CheckSelfPermission(Manifest.Permission.Camera) == (int)Permission.Granted)
{
// We have permission, go ahead and use the camera.
await CrossMedia.Current.Initialize();
if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
{
//"No Camera"
return;
}
// take video
var file = await CrossMedia.Current.TakeVideoAsync(new Plugin.Media.Abstractions.StoreVideoOptions
{
Quality = Plugin.Media.Abstractions.VideoQuality.High,
});
if (file == null)
return;
}
else
{
// Camera permission is not granted. If necessary display rationale & request.
}
}
选择视频
//pick video
private async void PickVideoButtonClick(object sender, EventArgs eventArgs)
{
if (this.CheckSelfPermission(Manifest.Permission.Camera) == (int)Permission.Granted)
{
// We have permission, go ahead and use the camera.
await CrossMedia.Current.Initialize();
// take video
var file = await CrossMedia.Current.PickVideoAsync();
if (file == null)
return;
}
else
{
// Camera permission is not granted. If necessary display rationale & request.
}
}
【讨论】: