国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

這篇具有很好參考價值的文章主要介紹了NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

功能簡介:

手機讀取 NFC 標(biāo)簽 (標(biāo)簽內(nèi)容為:內(nèi)網(wǎng) url),點擊 url 直接播放 本地音樂【勾選默認打開方式可以實現(xiàn) “一觸即放“ 的效果】

功能演示地址:NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰成果演示]_嗶哩嗶哩_bilibili

源碼地址:NFC音樂墻: Java web 實現(xiàn)接口播放本地音樂


目錄

一、具體背景

二、技術(shù)分析

三、代碼實現(xiàn)

四、個人電腦部署流程


一、具體背景

前些天刷抖音,刷到了最近很火的 diy 音樂墻:就是將喜歡的音樂專輯打印出來,然后在背面貼上 NFC 標(biāo)簽,最后添加手機的快捷指令,實現(xiàn)一碰專輯照片就能自動播放音樂的功能,如下圖:

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

抖音鏈接:https://v.douyin.com/r1vQn55/https://v.douyin.com/r1vQn55/

二、技術(shù)分析

看完這個小視頻我也非常想弄一面屬于自己的音樂墻,畢竟生活需要點儀式感嘛,所以我就認真的看了幾遍這個視頻,打算自己也跟著弄一下。但在研究具體的操作過程中,發(fā)現(xiàn)了幾點自己和視頻博主使用需求不太一樣的地方:

① 我用的是小米civi(不是蘋果,也沒有快捷指令)

② 視頻中音樂是存儲在手機中的,換了手機就用不了了

【先聲明一下哈,此博文為個人折騰記錄,就是發(fā)現(xiàn)了好玩的東西,然后用自己的方式來搗弄了一下,滿足一下個人好奇心,順便記錄一下而已,完全沒有任何冒犯的意思。如果您喜歡折騰的話,歡迎來評論區(qū)交流。還有就是我個人技術(shù)一般般,大哥們要噴的話請輕點噴。最后最重要的一點是,如果您不愛折騰的話,直接點上面的抖音鏈接,看看人家的效果就行,就不建議往下看了】

針對我的個人需求,我查了一下資料,也在抖音里找了其它的實現(xiàn)方式。發(fā)現(xiàn)了也有不限手機的實現(xiàn)方法:就是使用網(wǎng)易云(xxx.126.net/music.163.com)/酷狗(t4.kugou.com)等平臺的音樂分享鏈接,在手機 nfc 讀取到鏈接后,使用瀏覽器打開鏈接,再點擊播放音樂,來實現(xiàn)效果。【這個方案大家也可以試一下,畢竟我下面記錄的方法是真的很復(fù)雜】

上面的實現(xiàn)方式其實已經(jīng)幾乎滿足需求了,但我還想播放本地的音樂,而且抖音上也有播放本地音樂的需求,所以都已經(jīng)折騰了,干脆折騰到底吧。廢話了這么多,終于講到了我的實現(xiàn)方式:寫一個服務(wù)(程序),提供播放音樂的接口,nfc 讀取完標(biāo)簽后,跳轉(zhuǎn)直接播放音樂。

和上面音樂平臺分析鏈接的區(qū)別:

① 點擊此鏈接直接就會播放音樂,無需跳轉(zhuǎn)后再點擊播放按鍵才開始播放音樂

② 播放的是本地音樂,即存儲在電腦里的音樂,操作靈活性大(沒有音樂平臺鏈接有會員權(quán)限問題)

看一下效果:(上面有視頻鏈接)

觸碰直接跳轉(zhuǎn),直接播放音樂,同時顯示:playing music:xxx

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

顯示正在播放的音樂 ?

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

后臺顯示播放音樂接口被調(diào)用,且播放的音樂為:xxx

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

三、代碼實現(xiàn)

我的思路是:提供一個播放音樂的接口,接口參數(shù)為要播放歌曲的名字(例如:http://localhost:8080/play?name=句號-鄧紫棋),只要打開此接口 url,后臺服務(wù)就會去找本地的音樂文件,然后使用播放音樂的對象播放,流程如圖:

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]?技術(shù)架構(gòu):Spring Boot + Maven

  1. Controller 層

@RestController
public class MusicPlayerController {
?
 ? ?private static final Logger log = LoggerFactory.getLogger(MusicPlayerController.class);
?
 ? ?@Autowired
 ? ?MusicPlayer musicPlayer;
?
 ? ?@GetMapping("/play")
 ? ?public ResponseEntity<String> playMusic(String name) throws Exception {
 ? ? ? ?log.info("play music : {}", name);
 ? ? ? ?musicPlayer.playMusic(name);
 ? ? ? ?return ResponseEntity.ok("playing music :" + name);
 ?  }
?
 ? ?@GetMapping("/stop")
 ? ?public ResponseEntity<String> stopPlaying() {
 ? ? ? ?log.info("stop playing music");
 ? ? ? ?musicPlayer.stopMusic();
 ? ? ? ?return ResponseEntity.ok("stop playing music");
 ?  }
}

2. Service 層

@Service
public class MusicPlayerImpl implements MusicPlayer {
?
 ? ?/**
 ? ? * 參考:Java 播放MP3
 ? ? * https://blog.csdn.net/qq_34814092/article/details/80889813
 ? ? *
 ? ? * @param musicInfo
 ? ? * @throws Exception
 ? ? */
 ? ?@Async
 ? ?@Override
 ? ?public void playMusic(String musicInfo) throws Exception {
 ? ? ? ?File file = new File("C:\\yuyu\\music\\" + musicInfo + ".mp3");
 ? ? ? ?FileInputStream stream = new FileInputStream(file);
 ? ? ? ?Player player = PlayerInstance.getPlayerInstance();
 ? ? ? ?if (player == null) {
 ? ? ? ? ? ?PlayerInstance.setPlayerInstance(stream);
 ? ? ? ? ? ?player = PlayerInstance.getPlayerInstance();
 ? ? ? ? ? ?player.play();
 ? ? ?  } else {
 ? ? ? ? ? ?player.close();
 ? ? ? ? ? ?PlayerInstance.setPlayerInstance(stream);
 ? ? ? ? ? ?player = PlayerInstance.getPlayerInstance();
 ? ? ? ? ? ?player.play();
 ? ? ?  }
 ?  }
?
 ? ?@Override
 ? ?public void stopMusic() {
 ? ? ? ?Player player = PlayerInstance.getPlayerInstance();
 ? ? ? ?player.close();
 ?  }
}

核心的服務(wù)在這一部分,這里有三個問題:

① 怎么用 Java 播放 MP3 音樂?

參考:Java 播放MP3_深色風(fēng)信子的博客-CSDN博客_java播放音頻文件

使用 Google 的 mp3spi

② 怎么保證只有一個音樂在播放,即怎么能實現(xiàn)切歌的功能?

單獨定義了一個實例對象類,每次調(diào)用 playMusic 和 stopMusic 方法時都只調(diào)用同一個對象

serivce 層

Player player = PlayerInstance.getPlayerInstance();
if (player == null) {
 ? ?PlayerInstance.setPlayerInstance(stream);
 ? ?player = PlayerInstance.getPlayerInstance();
 ? ?player.play();
} else {
 ? ?player.close();
 ? ?PlayerInstance.setPlayerInstance(stream);
 ? ?player = PlayerInstance.getPlayerInstance();
 ? ?player.play();
}

實例對象 PlayerInstance

public class PlayerInstance {
?
 ? ?private static final Logger log = LoggerFactory.getLogger(PlayerInstance.class);
?
 ? ?public static Player player;
?
 ? ?public static Player getPlayerInstance() {
 ? ? ? ?return player;
 ?  }
?
 ? ?public static void setPlayerInstance(FileInputStream stream) {
 ? ? ? ?try {
 ? ? ? ? ? ?player = new Player(stream);
 ? ? ?  } catch (JavaLayerException e) {
 ? ? ? ? ? ?log.error("set player instance error", e);
 ? ? ?  }
 ?  }
}

③ 怎么在播放音樂的同時,立刻返回信息給用戶?

因為播放音樂是耗時的操作,所以如果不處理,請求就會超時。即還在播放音樂,但頁面顯示訪問超時。

解決方案:異步。具體實現(xiàn)是:將播放音樂的 service 方法設(shè)置成異步執(zhí)行,controller 層在調(diào)用播放音樂的方法后,能立刻返回消息。

參考:SpringBoot 如何實現(xiàn)異步編程_榔娃的博客-CSDN博客_springboot 異步

在 playMusic( ) 方法添加注解 @Async

@Async
@Override
public void playMusic(String musicInfo) throws Exception {
 ? ?File file = new File("C:\\yuyu\\music\\" + musicInfo + ".mp3");
 ? ?FileInputStream stream = new FileInputStream(file);
 ? ?Player player = PlayerInstance.getPlayerInstance();
 ? ?if (player == null) {
 ? ? ? ?PlayerInstance.setPlayerInstance(stream);
 ? ? ? ?player = PlayerInstance.getPlayerInstance();
 ? ? ? ?player.play();
 ?  } else {
 ? ? ? ?player.close();
 ? ? ? ?PlayerInstance.setPlayerInstance(stream);
 ? ? ? ?player = PlayerInstance.getPlayerInstance();
 ? ? ? ?player.play();
 ?  }
}

完整代碼鏈接:NFC音樂墻: Java web 實現(xiàn)接口播放本地音樂

四、個人電腦部署流程

這一部分是為想折騰的小伙伴準(zhǔn)備的,但整個過程比較麻煩,安裝 jdk 也稍微有點風(fēng)險,建議完全不懂電腦環(huán)境配置的小伙伴就別折騰了,現(xiàn)在離開還來得及。然后本文只是我自己搗弄的記錄,代碼也比較簡單(就是說 bug 比較多),所以非常不建議小白嘗試,多刷會抖音不更香嗎。

前提條件:

① 電腦、手機連著同一個 WiFi;

② 電腦需要有 jdk8 環(huán)境

(安裝教程:win10中jdk安裝詳細安裝過程:win10中jdk安裝詳細安裝過程_默默爬行的蟲蟲的博客-CSDN博客_win10安裝jdk;win10安裝JDK8:win10安裝JDK8 - 嗶哩嗶哩)

具體部署流程:

1、先確認 jdk8 環(huán)境沒有問題。

win + R 鍵 --> 輸入 : cmd 打開命令行窗口

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

輸入指令 java -version,正常會顯示如下 :

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

2、下載我打包好的 jar 包 (地址:package/music-play-0.0.1.jar · 欲伯先煜仔/NFC音樂墻 - Gitee.com),并放到一個指定的路徑下。例如我放到 C盤 的 test 文件夾下:

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

3、新建一個存放音樂的文件夾,位置為:C:\music (這個位置是固定的,因為是程序里寫的)

如果用我打包好的 jar 包,存放音樂的文件夾的路徑必須是 C:\music !?。?/p>

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

4、寫一個.bat 文件,目的是可以雙擊運行 Java 程序

效果:NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

步驟:

① 新建一個文本文檔

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

② 打開文本文檔并復(fù)制如下內(nèi)容(如果下載的 jar 包,存放的路徑和我一樣,可以直接復(fù)制,不一樣的將下面的路徑改成你自己的路徑就行)

cd C:\test
?
java -jar music-play-0.0.1.jar

③ 修改文本文檔名字和后綴:playMusic.bat

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

5、查看并記住電腦的 IP 地址

win + R 鍵 --> 輸入 : cmd 打開命令行窗口

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

輸入指令 ipconfig

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

?NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

可以看到當(dāng)前我電腦的 IP 為 192.168.31.63 (這個 IP 是家里路由器分配的)

6、雙擊上面第四步寫好的 .bat 文件,瘋狂右擊一下(右鍵以管理員權(quán)限運行)程序才能正常運行,正常運行如下圖:

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

7、播放音樂的接口

http://192.168.31.63:8080/play?name=鄧紫棋-句號

192.168.31.63 -> ip 地址為上面查的電腦的IP地址

鄧紫棋-句號 -> 歌名,為上面存在 C:\music 路徑下的歌名

8、停止播放音樂的接口(或者直接關(guān)掉上面的黑框,直接關(guān)掉程序)

http://192.168.31.63:8080/stop

9、把網(wǎng)址復(fù)制到瀏覽器并訪問,顯示 playing music:xxx ,并開始播放音樂,說明服務(wù)部署成功

NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]

10、最后一步就是將上面的地址(例:http://192.168.31.63:8080/play?name=鄧紫棋-句號)寫進nfc 標(biāo)簽

11、標(biāo)簽寫完之后,就可以使用連著同一個WiFi的帶nfc的手機去:碰圖聽音了。

收藏一個在線轉(zhuǎn) gif 的網(wǎng)站:Convertio — 文件轉(zhuǎn)換器文章來源地址http://www.zghlxwxcb.cn/news/detail-454588.html

到了這里,關(guān)于NFC 音樂墻 (不限手機)[web 接口服務(wù)實現(xiàn)-折騰記錄]的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn)

    基于XML的Web服務(wù)Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 實現(xiàn)

    JAX-WS(Java API for XML-Based Web Services),是創(chuàng)建web服務(wù)的Java編程接口,特別是SOAP服務(wù)。是Java XML編程接口之一,是Java SE 和Java EE 平臺的一部分。 JAX-WS 2.0 規(guī)范是代替JAX-RPC 1.0的下一代Web服務(wù)API。JAX-RPC(The Java API for XML Based RPC)是基于XML的RPC(遠程過程調(diào)用)的Java API。 JAX-WS 2

    2024年02月08日
    瀏覽(19)
  • 用手機NFC復(fù)制校園一卡通

    用手機NFC復(fù)制校園一卡通

    NFC是Near Field Communication縮寫,即 近距離無線通訊技術(shù) 。 校園卡一般是感應(yīng)式CPU卡,是一種加密卡。 如果只有一個帶nfc功能的安卓手機,那么手機只能復(fù)制校園卡的第0塊第0扇區(qū),類似于nfc卡的卡號或者有點像是nfc的名字。 加密部分都不能被讀取出來。一般關(guān)于錢的部分都被

    2024年02月07日
    瀏覽(24)
  • 【折騰向】閑置手機 + 內(nèi)網(wǎng)穿透 + caddy + rclone = ?

    【折騰向】閑置手機 + 內(nèi)網(wǎng)穿透 + caddy + rclone = ?

    通過 frp 內(nèi)網(wǎng)穿透將閑置手機暴露至公網(wǎng),并使用 caddy 搭建 webdav 服務(wù),客戶端使用 rclone 實現(xiàn) webdav 掛載,達到類堅果云的效果。 要有公網(wǎng) IP!要有公網(wǎng) IP!要有公網(wǎng) IP! 公網(wǎng) IP 或者一臺 VPS,這里我用的是阿里輕量,新加坡(沒有特殊需求還是建議選國內(nèi))。 Android 手機

    2024年04月26日
    瀏覽(23)
  • RFID射頻卡寫入手機NFC心路小記

    RFID射頻卡寫入手機NFC心路小記

    聲明: 本文僅是作者學(xué)習(xí)探索的心里路程日記,如果您看完以后,從中獲得了一些經(jīng)驗,作者不勝榮幸。 文章中的方法仍需要經(jīng)濟支出,借助他人工具完成,如讀者想全憑個人之力從零制作自己的讀卡解碼設(shè)備,可至此結(jié)束。 ??目前,各個小區(qū)多使用射頻卡管理門禁和電

    2024年02月09日
    瀏覽(24)
  • 基于web的音樂網(wǎng)站的設(shè)計與實現(xiàn)

    基于web的音樂網(wǎng)站的設(shè)計與實現(xiàn)

    系統(tǒng)包含:源碼+ppt+論文+說明文檔 所用技術(shù):SpringBoot+Mybatis+Mysql 獲取資料請滑到底部獲取聯(lián)系方式 隨著信息技術(shù)在管理上越來越深入而廣泛的應(yīng)用,管理信息系統(tǒng)的實施在技術(shù)上已逐步成熟。本文介紹了音樂網(wǎng)站的開發(fā)全過程。通過分析音樂網(wǎng)站管理的不足,創(chuàng)建了一個計

    2024年02月22日
    瀏覽(20)
  • WEB通訊技術(shù)。前端實現(xiàn)SSE長連接,nodejs+express搭建簡單服務(wù)器,進行接口調(diào)試,通過curl請求數(shù)據(jù)

    WEB通訊技術(shù)。前端實現(xiàn)SSE長連接,nodejs+express搭建簡單服務(wù)器,進行接口調(diào)試,通過curl請求數(shù)據(jù)

    長連接(Keep-Alive)是一種HTTP/1.1的持久連接技術(shù),它允許客戶端和服務(wù)器在一次TCP連接上進行多個HTTP請求和響應(yīng),而不必為每個請求/響應(yīng)建立和斷開一個新的連接。長連接有助于減少服務(wù)器的負載和提高性能。 長連接的HTTP請求方法與普通HTTP請求方法相同,可以使用GET、P

    2024年02月09日
    瀏覽(30)
  • 超級SIM卡 SEID號讀取 手機NFC門禁刷卡模塊方案

    超級SIM卡 SEID號讀取 手機NFC門禁刷卡模塊方案

    中國移動超級SIM卡是基于SIM卡安全芯片,利用其不同功能而實現(xiàn)不同等級認證的安全產(chǎn)品。簡單來說,就是為了便利用戶的生活而推出的更加安全的一體卡。 超級SIM卡,內(nèi)含加密芯片以及NFC功能,線下可充當(dāng)飯卡,門禁卡,交通卡,車鑰匙;線上可以進行金融安全認證、5G電

    2024年02月11日
    瀏覽(75)
  • 市面上有幾款手機有NFC功能的,什么牌子什么型號的?

    華為支持NFC功能型號有華為Mate系列,P系列,nova系列,榮耀note系列,榮耀Magic系列等;蘋果支持NFC功能型號有iPhone11,iPhoneXS,iPhoneXR,iPhoneX,iPhone8,iPhone7,iPhone6s和iPhone6,iPhoneSE系列。..........................

    2024年02月11日
    瀏覽(21)
  • 阿里云99元服務(wù)器ECS經(jīng)濟型e實例3M帶寬「不限流量」

    阿里云99元服務(wù)器ECS經(jīng)濟型e實例3M帶寬「不限流量」

    阿里云服務(wù)器優(yōu)惠99元一年,配置為云服務(wù)器ECS經(jīng)濟型e實例,2核2G配置、3M固定帶寬和40G ESSD Entry系統(tǒng)盤 ,CPU采用Intel Xeon Platinum架構(gòu)處理器,2.5 GHz主頻,3M帶寬下載速度384KB/秒,上傳速度1028KB/秒,阿騰云atengyun.com分享阿里云99元服務(wù)器性能測評及續(xù)費不漲價方法: 阿里云99元

    2024年02月22日
    瀏覽(18)
  • 【服務(wù)器】安卓手機使用Termux搭建web服務(wù)

    【服務(wù)器】安卓手機使用Termux搭建web服務(wù)

    ??Yan-英杰的主頁 悟已往之不諫 知來者之可追 ?? C++程序員,2024屆電子信息研究生 目錄 概述 1.搭建apache 2.安裝cpolar內(nèi)網(wǎng)穿透 3.公網(wǎng)訪問配置 4.固定公網(wǎng)地址 5.添加站點 Termux是一個Android終端仿真應(yīng)用程序,用于在 Android 手機上搭建一個完整的Linux 環(huán)境,能夠?qū)崿F(xiàn)Linux下的許

    2024年02月06日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包