一个创建手机音乐播放列表的小程序

摘要:
一个播放列表创建软件,从而实现在电脑上管理手机的音乐最近买了个w958,为了充分利用它那4G空间,我往里面放了大量的歌曲。我平时听音乐习惯按播放列表听,而手机中却只能一个个的文件添加,确实够麻烦。在一次上传文件的过程中,打开了手机自建的一个播放列表,发现只是一个个的m3u文件,打开看了一下,只是很简单的文本格式。\n\n");Console.WriteLine("创建完成后,按回车键将生产播放列表。

一个播放列表创建软件,从而实现在电脑上管理手机的音乐

最近买了个w958,为了充分利用它那4G空间,我往里面放了大量的歌曲。平时我的音乐下载都是没有怎么系统的管理,都是往电脑的音乐文件夹里一丢就完了,得益于wmp的强大的音乐管理功能,听起来还是比较方便,但在手机上就不是那么回事了,Walkman的音乐管理功能虽然在手机音乐管理方面确实算首屈一指,但音乐多了,你要找个音乐确实不容易。

我平时听音乐习惯按播放列表听,而手机中却只能一个个的文件添加,确实够麻烦。在一次上传文件的过程中,打开了手机自建的一个播放列表,发现只是一个个的m3u文件,打开看了一下,只是很简单的文本格式。于是便想写一个播放列表的创建软件,实现在电脑上对手机中的音乐的管理。

该软件原理十分简单:首先将手机上的音乐文件的快捷方式映射到电脑上来,然后在电脑上根据手机的音乐创建播放列表,最后将创建好的播放列表上传会手机。

代码如下:

classProgram
{
staticvoid Main(string[] args)
{
try
{
var driver = DriveInfo.GetDrives().Last();
string defaultPath = Path.Combine(driver.ToString(), "music");
Console.WriteLine("
请输入音乐路径("+ defaultPath + ")");
string path = Console.ReadLine();
if (string.IsNullOrEmpty(path))
path = defaultPath;
var p = newPlayListCreater(path);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
classPlayListCreater
{
conststring musicDir = "music";
conststring playListDir = "playlist";
string root;
public PlayListCreater(string root)
{
this.root = root;
if (!root.EndsWith(@"\"))
this.root += @"\";
CreateDir();
ScanFile(root);
Console.ReadLine();
CreatePlayList();
}
privatevoid ScanFile(string root)
{
Console.WriteLine(string.Format("
开始扫描'{0}'目录中的音乐文件。\n",root));
newFileTraveler(root, "*.mp3", visitMusicDir, visitMusic);
Console.WriteLine("\n\n
文件扫描已经完成。");
Console.WriteLine("
请在playlist文件夹中创建播放列表。\n\nmusic文件夹中的文件拖到playlist的子文件夹中,playlist文件夹中每个子文件夹都将作为一个播放列表。\n\n");
Console.WriteLine("
创建完成后,按回车键将生产播放列表。");
System.Diagnostics.Process.Start("explorer", playListDir);
System.Diagnostics.Process.Start("explorer", musicDir);
}
void CreatePlayList()
{
byte[] buffer = newbyte[1024];
foreach (var item inDirectory.GetDirectories(playListDir))
{
//
这里的播放列表必须用unicode编码,否则手机不认StreamWriter writer = newStreamWriter(
Path.Combine(playListDir, Path.GetFileName(item) + ".m3u")
, false, Encoding.Unicode);
writer.WriteLine("#M3U");
var fileList = newList<string>();
newFileTraveler(item, "*.mp3", null,
x =>{
var fs = File.OpenRead(x);
int count = fs.Read(buffer, 0, buffer.Length);
string file = Encoding.Default.GetString(buffer, 0, count);
fileList.Add(file);
fs.Close();
});
foreach (var mp3 in fileList)
{
writer.WriteLine("D"+ mp3.Substring(1));
}
writer.Close();
}
}
privatestaticvoid CreateDir()
{
Directory.CreateDirectory(musicDir);
Directory.CreateDirectory(playListDir);
Directory.Delete(musicDir, true);
Directory.Delete(playListDir, true);
Directory.CreateDirectory(musicDir);
Directory.CreateDirectory(playListDir);
}
void visitMusicDir(string dir)
{
string ndir = Path.Combine(musicDir, dir.Replace(root, ""));
Directory.CreateDirectory(ndir);
}
void visitMusic(string file)
{
Console.WriteLine(Path.GetFileName(file));
string nfile = Path.Combine(Path.GetFullPath(musicDir), file.Replace(root, ""));
FileStream fs= File.Create(nfile);
byte[] data = Encoding.Default.GetBytes(file);
fs.Write(data, 0, data.Length);
fs.Close();
}
}
///<summary>
///
文件遍历类(递归算法实现)///</summary>
classFileTraveler
{
string filePatten;
Action<string> visitDireHanlder;
Action<string> visitFileHanlder;
public FileTraveler(string root, string filePatten, Action<string> visitDireHanlder, Action<string> visitFileHanlder)
{
this.filePatten = filePatten;
this.visitDireHanlder = visitDireHanlder;
this.visitFileHanlder = visitFileHanlder;
VisitDir(root);
}
void VisitDir(string dir)
{
if (visitDireHanlder != null)
visitDireHanlder(dir);
if (visitFileHanlder != null)
{
foreach (var file inDirectory.GetFiles(dir, filePatten))
{
visitFileHanlder(file);
}
}
foreach (var subdir inDirectory.GetDirectories(dir))
{
VisitDir(subdir);
}
}
}

程序的代码比较简单,也没什么技术含量,就不介绍了。一个注意的地方是我的w958的m3u文件只认识unicode编码格式,因此播放列表要保存为unicode格式,否则中文乱码。

本来我最初打算写一个类似mediaplayer的媒体库类似的管理软件,写了一会儿就发现,要实现像mediaplayer那么友好的gui并不是那么容易。便想到通过windows的文件系统模拟这个gui,首先将手机上的音乐文件的快捷方式映射到电脑上来,然后只要将这些音乐文件快捷方式放入新建的播放列表的文件夹中,最后根据播放列表文件夹中的文件创建播放列表。十分简单易用。

这个程序创建的播放列表也可用于mediaplayer,但和mediaplayer的强大管理功能比起来,还不如直接用mediaplayer。如果要实现完善的电脑上管理手机音乐,最好的方式是将mediaplayer的播放列表转换为手机播放列表。这个实现起来也很简单,但这要求手机上的音乐和电脑上是同步的。由于我的手机上的音乐和电脑并不同步,因此暂时就没有这么做。有兴趣的朋友可以自己去实现一下。

免责声明:文章转载自《一个创建手机音乐播放列表的小程序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android_模拟器无法启动解决办法汇总java 中的 long下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

音乐播放

1.初始化mediaplay MediaPlay m = new MediaPlay(); 2.加载文件路径 m.setDataSource(“路径”); 3.准备播放 m.prepare(); 4.开始播放 m.stare(); 注意 如果文件在sd卡中需要加权限 如果手机为6.0版本以上 在onCreate()添加运行权限...

树莓派3 之 音响配置

播放音乐 说明 使用树莓派3来播放音乐,将音响连接到树莓派的AV输出接口即可听到音乐 介绍如何更改树莓派音频输出接口以及调节音量。 准备条件 树莓派3 3.5mm耳机或者音响一个 步骤 安装MPlayer, MPlayer 是一款开源的多媒体播放器,树莓派上安装mplayer即可播放音乐或者其他音频信息 $sudoapt-getupdate $...

ios播放声音中断后台音乐的问题

   今天遇到一个ios播放声音中断后台音乐的问题,在我的app中如果调用AVAudioSession 播放完声音,后台的qq音乐偶尔不能恢复,而网易云音乐一次都不能恢复播放,研究了一下AVAudioSession ,我之前调用[audioSession setActive:NO error:&err];还有一个方法 /* Set the sess...

JS实现控制HTML5背景音乐播放暂停

首先在网页中嵌入背景音乐,html5代码为: <script src="http://wuover.qiniudn.com/jquery.js"></script> <a class="mscBtn" id="audioBtn" title='最幸福的人' style="cursor:pointer;"></a&...

某音乐平台付费音乐破解

0x00 前言 最近看到一篇文章是针对付费音乐破解的文章 特来跟风复现下参考文章 0x01 找到一首付费歌曲 首先打开某音乐平台随便缓存一首需要付费下载的歌曲 比如霉霉的歌曲很多都是付费音乐 0x02 看设置缓存目录文件 0x03 破解文件 接着把文件拖到010Edit里 我们可以查看到如下图所示的数据,发现一个很明显的特点——最多的数据是A3 所以...

关于主流播放器蛋疼的联网功能的研究

结论:   pc版百度音乐阉割联网功能   手机版天天动听或网易云音乐阉割联网功能 作为一名虔诚的LoveLiver,听μ's的歌写程序是必须的~ 无疑,音乐一定要是flac无损的(尽管我听不出来),带高清专辑封面(尽管我不看),有双语歌词的(尽管我也不怎么看) 在众多LoveLiver的共同努力下,我们有了符合以上要求的歌曲(如图,有高清专辑封面,在...