# 嘗試使用ai2做出android radio APP與失敗原因   ## 概念 ### 困境 台灣網路電台的協定是走 "mms://" 的方式  這時候就會遇到一個問題了,首先MS是連接Windows Media單播服務的默認方法,而Windows Media是用於windows vista 到 windows 7之間的默認影音撥放程式,而現在已經沒有了,是因為他太老舊了,所以很多已經不支援了,相對MMS也就不怎麼支援了,那問題困難點就來了,mms沒有辦法直接解析,因為他會不斷一直丟片段音檔,而且使用UDP方式,所以程式內沒有對應的程式,基本上就沒有辦法解析資料,如果是用android studio寫的話,可以參考 https://changyy.pixnet.net/blog/post/31675147 這篇文章。 看回來ai2的部分,首先遇到的問題是player與web方式撥放差別, ai2中文學習往解釋player的部分: ``` Player 元件可播放聲音或影像檔,或使裝置震動。Player 元件為一非可視元件,可播放聲音或影像檔和控制震動手機。 ``` 而webview的是: ``` 非可視元件,可提供 HTTP GET, POST, PUT 以及 DELETE 等功能。 ``` 那player就是可以撥放任何為mp3或mp4的檔案,但是僅限於前者提到的檔案格式,以外一律不行,所以如果我的網址輸入後得到的檔案不為兩者,那他就無法撥放,而mms得到的通常會有其他資料而不是乾淨完整的mp3,所以電台這就行不通。 那web的形式呢,很可惜又直接的,mms並不是http協定,所以不能讀取。那如果從網頁爬內碼的連結呢,那會牽扯到很多東西 >第一個:ai2並不能去使用API第三方API,也就是很多東西會無法使用 >第二個:ai2官方有寫可以使用的額外資料([參考這](https://puravidaapps.com/extensions.php)),但是還是沒有可以解析MMS協定的方法 所以ai2的擴充性與相容性並沒有到很高,那如果是走http的網路電台是否可以使用呢? 答案是可以的,我使用的是[飛特電台](http://phate.io/),他是一個動漫電台,但裡面很多是有版權的音樂,所以要特別注意一下。上方連結點進去因該是會看到有內容的網站沒錯,但是官方有提供一組網址叫[http://phate.io/listen](http://phate.io/listen) ,應該會看到的是一個mp3的串流資料,那個就是能夠使用的資料。 那既然得到一組可以串流的mp3網址,那拿回去ai2裡面的player理論上就是能用了,事實上測試後確實是能用的,那mp3可以用那web應該也是能使用的,也確實是可以正常使用的沒問題,那player的大致使用確定了以後,那還剩web的部分,到底能使用多少種的東西來撥放音樂。 最簡單的方式是使用youtube,畢竟是最大的影音平台,直接放出來是沒有問題的,但是這時候遇到了一個大問題了,手機版的網頁讀取YouTube不會自動撥放與影片預設是靜音,自動撥放還算好解決([請參考此篇](https://support.google.com/youtube/answer/171780?hl=zh-Hant#zippy=%2C%E8%87%AA%E5%8B%95%E6%92%AD%E6%94%BE%E5%85%A7%E5%B5%8C%E5%BD%B1%E7%89%87)) 我們只需要在網址後面加上&autoplay=1即可完成自動撥放,自動撥放問題解決了,剩下自動靜音的問題,可以使用API來解決或者使用PHP來解決,但是API在前面敘述已經提過,ai2並沒有辦法使用,那只剩PHP的方式,但是ai2的web並不能使用內嵌的方式,假設我自行設計一個簡易網站的話,那是沒問題的,但是就已經超出使用ai2的方式了,因為那是使用網站處理完然後APP直接顯示而已,所以php的方式並沒有辦法使用。 那既然都這樣很多辦法都不行,但是我無意間發現一個法式貌似可以([請參考此篇](https://jbprogramnotes.com/2021/05/%E4%BD%BF%E7%94%A8-app-inventor-%E6%92%AD%E6%94%BE-youtube-%E9%9F%B3%E6%A8%82/))。 有一個API他是可以先自行去找到那個影片的下載位置(下載位置是API資料的),得到後再去用內碼找到mp3的網址,再拿得到的網址按照上方的方式使用player撥放,這是沒問題的。 於是我去測試看看了兩個東西,一個是播放清單,另一個是直播內容,因為像是警察廣播頻道的網路電台是直接放在youtube於是我也順便一起測試,但很不幸的都失敗,但是沒有很意外,因為API通常是先得到已經儲存起來的YouTube內容再去使用爬蟲技術之類的方式抓資料下來給使用者,但是像是撥放清單,得到的內容並不是影片而是清單,而API不認識,所以理所當然沒辦法,而直播內容則是用串流的形式,所以沒有固定的內容,所以沒有辦法實時抓取,所以也會失敗,既然都不行,那就只能把我現在能想到的解決方式與成功的內容放上來。 ### 成功的內容 於上方敘述所示,成功的僅有直接撥放youtube與可串流且是走http協定的mp3資料, 所以我在snipper裡面放上兩個選項一個為飛特電台的另一個就是youtube。 下方有兩個按鈕一個是start另一個是END,END會直接關掉內容,可以按start重新開始,基本上就只有這樣,但是無意間有試成功的是,player可以讓程式於背景放著撥放,所以還是有一個可以於背景撥放。 ## 結論 ai2雖然擴充性與相容性都不高,但是還是可以用基本的方法去做出一個功能,網路上有使用ai2製作台灣的網路電台與網路音樂播放都不多,所以寫簡單的文章概述僅此,本人研究沒有太深,所以有任何問題或者錯誤請與我聯絡(mail : yxiao940@gmail.com) 製作人:阿雷(楊)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up