如何使用 xamarin.forms 在移动设备中选择多个音频和/或视频文件?
Posted
技术标签:
【中文标题】如何使用 xamarin.forms 在移动设备中选择多个音频和/或视频文件?【英文标题】:How to select multiple audio and/or video files in mobile device using xamarin.forms? 【发布时间】:2018-04-09 13:00:00 【问题描述】:我正在 Xamarin 中编写音频播放器,我想创建一个播放列表并保存。要创建播放列表,我想选择音频/视频文件。我知道 Xamarin 中没有 FileUpload 类型的控件。
我指的是 Jason 的媒体插件https://github.com/jamesmontemagno/MediaPlugin,我想使用这个插件或任何其他插件来创建播放列表。我不知道如何配置/更改以加载音频/视频文件。
我已添加 nuget 包并尝试配置以下信息:
android 当前活动设置
这个插件使用Current Activity Plugin 来访问当前的Android Activity。如果 MainApplication.cs 文件未自动添加到您的应用程序,请务必完成完整设置。请通读Current Activity Plugin Documentation。您必须至少在 Activity 的 OnCreate 方法中设置以下内容:
csharp
Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity = this;
=========================== 我知道我创建的项目不是 Xamarin.Android,它是用于移动应用程序的简单 .NET 2.0 Core 项目。
【问题讨论】:
你尝试了什么? 添加了更多信息。 【参考方案1】:我指的是 Jason 的媒体插件https://github.com/jamesmontemagno/MediaPlugin,我想使用这个插件或任何其他插件来创建播放列表。
添加NuGet包后,需要添加WRITE_EXTERNAL_STORAGE
、READ_EXTERNAL_STORAGE
权限,并在OnCreate方法中添加Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity = this;
。还需要覆盖OnRequestPermissionsResult()
方法。
代码如下:
using Plugin.Permissions;
using Plugin.Permissions.Abstractions;
namespace selectmultipleaudio
[Activity(Label = "selectmultipleaudio", MainLauncher = true)]
public class MainActivity : Activity
protected override void OnCreate(Bundle savedInstanceState)
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity = this;
Button button = FindViewById<Button>(Resource.Id.button1);
button.Click += Button_ClickAsync;
private async void Button_ClickAsync(object sender, System.EventArgs e)
var crossMedia = CrossMedia.Current;
var media = await crossMedia.PickVideoAsync();
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
您可以使用意图来选择多个视频文件。例如:
private void Button_Click(object sender, System.EventArgs e)
var videoIntent = new Intent(
Intent.ActionPick);
videoIntent.SetType("video/*");
videoIntent.PutExtra(Intent.ExtraAllowMultiple, true);
videoIntent.SetAction(Intent.ActionGetContent);
((Activity)this).StartActivityForResult(
Intent.CreateChooser(videoIntent, "Select videos"), 0);
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
if (data.ClipData != null)
for (var i = 0; i < data.ClipData.ItemCount; i++)
var video = data.ClipData.GetItemAt(i);
Uri videouri = video.Uri;
var path = videouri.Path;
else
Uri videouri = data.Data;
var path = videouri.Path;
【讨论】:
以上是关于如何使用 xamarin.forms 在移动设备中选择多个音频和/或视频文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xamarin Forms 中获取设备的 GPS 位置?
如何在 Xamarin.Forms.Map 中获取当前位置或移动到当前位置
Xamarin.Forms UWP 项目不会安装在 Windows 10 移动版上
在 iOS 上的 Xamarin.Forms.Maps 中使用 Xamarin.Essentials Geolocation 获取设备位置的奇怪问题