using System; using Android.Content; using Android.OS; namespace Shared { public class CommonClass { /// /// 打开应用 /// /// 包名 /// public static void OpenApp(string packetName) { if (Application.Activity == null || packetName == null) { return; } if (!isAvilible(Application.Activity, packetName)) { return; } var pi = Application.Activity.PackageManager.GetPackageInfo(packetName, 0); if (pi == null) { return; } var resolveIntent = new Intent(Intent.ActionMain, null); resolveIntent.AddCategory(Intent.CategoryLauncher); resolveIntent.SetPackage(pi.PackageName); var apps = Application.Activity.PackageManager.QueryIntentActivities(resolveIntent, 0); if (0 < apps.Count) { var ri = apps[0]; string pkgName = ri.ActivityInfo.PackageName; string className = ri.ActivityInfo.Name; var intent = new Intent(Intent.ActionMain); intent.AddCategory(Intent.CategoryLauncher); //launchFlags:创建一个新的进程来运行这个Activity,也可以不需要,这样就是在当前APP内打开(同一个进程) intent.SetFlags(ActivityFlags.NewTask | ActivityFlags.ResetTaskIfNeeded); intent.SetAction("android.intent.action.VIEW"); var cn = new ComponentName(pkgName, className); intent.SetComponent(cn); Application.Activity.StartActivity(intent); } } /** * 检查手机上是否安装了指定的软件 * @param context * @param packageName * @return */ public static bool isAvilible(Context context, string packageName) { var packageManager = context.PackageManager; var packageInfos = packageManager.GetInstalledPackages(0); var packageNames = new System.Collections.Generic.List(); if (packageInfos != null) { for (int i = 0; i < packageInfos.Count; i++) { var packName = packageInfos[i].PackageName; packageNames.Add(packName); } } // 判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE return packageNames.Contains(packageName); } /// /// 打开界面 /// /// Action. public static void OpenAction(string action){ try { Application.Activity.StartActivity(new Intent(action)); }catch{} } } } //你好,经过测试,我们发现有两种方法都可以实现流媒体的播放。 //第一种:可以实现音乐推送播放,但体验效果很不好,因为获取音乐真实播放地址时间很长,实现思路如下: //1、我们App先获取Token及时间 //2、然后用Tidal帐号直接登录airable服务器 //3、获取播放列表(不是真实的播放地址) //4、根据播放列表去获取真实的播放地址(这里获取时间很长,每一首时间长的有五六秒都有可能) //5、推送到播放器 //第二种:体验效果很好,但发送到播放的密码是加密的,需要算法。实现思路如下: //1、我们App先获取Token及时间 //2、然后用Tidal帐号直接登录airable服务器并同时把用户名和密码告诉播放器 //3、获取播放列表(不是真实的播放地址,关键信息是ID) //4、推送到播放列表到播放器