聽音樂不過癮?自制一個音樂播放器,Java開發社招面試經驗

前端小梅子 2021-09-20 03:58:27 阅读数:743

自制 播放器 播放 java

//定義一個列錶存放文件路徑
List<string> listpath = new List<string>();
//設置打開音樂文件屬性
private void openmusic_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
//設置音樂的起始默認打開比特置
ofd.InitialDirectory = @"?C:/Users/郭運剛/Music";
//設置可以匹配的音樂格式
ofd.Filter = "MP3文件|*.mp3;*.wav";
//ofd.Filter = null;
//設置上方的標題框名稱
ofd.Title = "請選擇音樂文件!";
//設置允許多選
ofd.Multiselect = true;
ofd.ShowDialog();
//獲取所選文件的全路徑
string[] path = ofd.FileNames;
for (int i = 0; i < path.Length; i++)
{
//將音樂文件的全路徑加入到列錶中
listpath.Add(path[i]);
//將音樂文件名添加到列錶
listBox1.Items.Add(Path.GetFileName(path[i]));
}
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.

.

[](

)雙擊音樂觸發播放屬性函數

===============================================================================

在添加好音樂之後,我們當然需要對音樂進行播放,在這裏我們需要設置當雙擊音樂文件後,可以在musicplayer播放器中進行播放。

該函數需要注意的地方是: 我們需要對存放音樂文件的列錶進行判斷,如果音樂列錶為零,也就是說當前並沒有可以播放的音樂的時候,我們需要對用戶進行提示。同時在我們雙擊播放音樂之後,我們先前設置的播放音樂的控件,此刻應該顯示的是暫停選項。

實現代碼如下:


//雙擊音樂觸發播放屬性
private void listBox1_DoubleClick(object sender, EventArgs e)
{
if (listBox1.Items.Count == 0)
{
MessageBox.Show("請先選擇播放音樂!");
return;
}
try
{
musicPlayer.URL = listpath[listBox1.SelectedIndex];
musicPlayer.Ctlcontrols.play();
playorpause.Text = "暫停";
//timer1_Tick_1(sender, e);
//music_plan.Text = musicPlayer.currentMedia.duration.ToString();
//調用函數去處理這個路徑下的這首歌的歌詞
IsExistlrc(listpath[listBox1.SelectedIndex]);
}
catch
{ }
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.

[](

)播放或暫停控件屬性函數

==============================================================================

該控件函數的作用,顧名思義,當然就是控制音樂的播放和暫停,同時需要注意的地方是,當我們點擊音樂播放的時候,應該讓音樂繼續之前的播放,而不是重新開始。同時在我們點擊播放或者暫停按鈕之後,該控件應該有對應的顯示。

實現代碼如下:


//設置播放或者暫停按鈕屬性
private void playorpause_Click(object sender, EventArgs e)
{
if (playorpause.Text == "播放")
{
//來個异常,防止列錶沒有音樂
try
{
//如果繼續單擊播放,那就讓他接著放
if (b)
{
musicPlayer.URL = listpath[listBox1.SelectedIndex];
}
}
catch
{ }
musicPlayer.Ctlcontrols.play();
playorpause.Text = "暫停";
}
else if (playorpause.Text == "暫停")
{
musicPlayer.Ctlcontrols.pause();
playorpause.Text = "播放";
b = false;
}
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.

[](

)停止控件屬性函數

===========================================================================

該函數的作用是:當用戶點擊停止之後,當前正在播放的音樂停止並且回到最初比特置。

實現代碼如下:


//設置停止控件屬性
private void button3_Click(object sender, EventArgs e)
{
musicPlayer.Ctlcontrols.stop();
playorpause.Text = "播放";
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

.

[](

)點擊下一曲控件函數

============================================================================

該函數的作用是:當我們點擊下一曲的時候,可以根據當前播放的音樂列錶,播放列錶中的下一首歌曲。

實現代碼如下:


//點擊下一曲
private void music_down_Click(object sender, EventArgs e)
{
//獲取當前歌曲索引比特置
int index = listBox1.SelectedIndex;
//清空歌曲選擇索引
listBox1.SelectedIndices.Clear();
index++;
if (index == listBox1.Items.Count)
{
index = 0;
}
listBox1.SelectedIndex = index;
musicPlayer.URL = listpath[index];
musicPlayer.Ctlcontrols.play();
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.

[](

)點擊下一曲控件函數

============================================================================

該函數的作用是:當我們點擊上一曲的時候,可以根據當前播放的音樂列錶,播放列錶中的上一首歌曲。

實現代碼如下:


//點擊上一曲
private void music_up_Click(object sender, EventArgs e)
{
int index = listBox1.SelectedIndex;
listBox1.SelectedIndices.Clear();
index--;
//如果此時是第一首歌曲,則索引减一為-1
if (index == -1)
{
//listBox1.Items.Count記錄的是歌曲數目,
//如果跳轉到最後一首,索引是數目减一
index = listBox1.Items.Count - 1;
}
listBox1.SelectedIndex = index;
musicPlayer.URL = listpath[index];
musicPlayer.Ctlcontrols.play();
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.

[](

)音樂删除函數

=========================================================================

該函數是將我們已經存放到音樂列錶中的音樂進行删除,當我們單擊選擇某一首音樂後,可以將其從列錶中删除。並且不會在自動播放時播放該音樂。

實現代碼如下:


//點擊删除
private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
{
//獲取已經選中歌曲的數量
int count = listBox1.SelectedItems.Count;
//删除列錶中的選中項
for (int i = 0; i < count; i++)
{
//首先删除集合中的歌曲
listpath.RemoveAt(listBox1.SelectedIndex);
//再删除存放在列錶裏的歌曲
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.

[](

)點擊靜音函數

=========================================================================

點擊靜音函數的作用是在我們點擊之後,音樂靜音,但此時的音樂仍然可以繼續播放,該徐行與播放器的settings.mute函數有關。

該函數的實現思路是:我們需要對當前音樂是否靜音進行一個設定,由於Text靜音控件的文本永遠都是不變的,所以我們需要借助該控件下的Tag屬性進行賦值判斷,

具體實現代碼如下:


//點擊靜音函數
private void label1_Click(object sender, EventArgs e)
### 最後在出來放一波福利吧!希望可以幫助到大家!
> **[CodeChina開源項目:【一線大廠Java面試題解析+核心總結學習筆記+最新講解視頻】](https://ali1024.coding.net/public/P7/Java/git)**
千千萬萬要記得:多刷題!!多刷題!!
之前算法是我的硬傷,後面硬啃了好長一段時間才補回來,算法才是程序員的靈魂!!!!
篇幅有限,以下只能截圖分享部分的資源!!
(1)多線程(這裏以多線程為代錶,其實整理了一本JAVA核心架構筆記集)
![聽音樂不過癮?自制一個音樂播放器,Java開發社招面試經驗_後端](https://s6.51cto.com/images/20210920/1632080869341768.jpg)
(2)刷的算法題(還有左神的算法筆記)
![聽音樂不過癮?自制一個音樂播放器,Java開發社招面試經驗_程序員_02](https://s9.51cto.com/images/20210920/1632080870336122.jpg)
(3)面經+真題解析+對應的相關筆記(很全面)
![聽音樂不過癮?自制一個音樂播放器,Java開發社招面試經驗_後端_03](https://s9.51cto.com/images/20210920/1632080870972712.jpg)
(4)視頻學習(部分)
> ps:當你覺得學不進或者累了的時候,視頻是個不錯的選擇
在這裏,最後只一句話:祝大家offer拿到手軟!!

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
版权声明:本文为[前端小梅子]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210920035826690X.html