python 代码
1 def application2(environ, start_response): 2 start_response("200 ok", [('Content-Type', 'audio/mp3')]) 3 with open("/Users/zhangyan/PycharmProjects/web/WebDemoApp/static/初音ミク,小野道 - 任性.mp3", mode="rb") as f: 4 data = f.read() 5 return [data]
Android 端
1 public class MainActivity extends AppCompatActivity implements View.OnClickListener, MediaPlayer.OnPreparedListener { 2 3 Button player; 4 MediaPlayer mediaPlayer; 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_main); 9 10 player = (Button) findViewById(R.id.btnId_main_player); 11 player.setOnClickListener(this); 12 } 13 14 @Override 15 public void onClick(View view) { 16 switch (view.getId()){ 17 case R.id.btnId_main_player: 18 playOnline(); 19 break; 20 } 21 } 22 23 private void playOnline() { 24 if (mediaPlayer == null){ 25 mediaPlayer = new MediaPlayer(); 26 mediaPlayer.setOnPreparedListener(this); 27 } 28 29 mediaPlayer.reset(); 30 try { 31 mediaPlayer.setDataSource("http://10.128.34.201:8000"); 32 mediaPlayer.prepareAsync(); 33 } catch (IOException e) { 34 e.printStackTrace(); 35 } 36 } 37 38 39 @Override 40 protected void onDestroy() { 41 super.onDestroy(); 42 if (mediaPlayer != null){ 43 mediaPlayer.stop(); 44 mediaPlayer.release(); 45 mediaPlayer = null; 46 } 47 } 48 49 @Override 50 public void onPrepared(MediaPlayer mediaPlayer) { 51 mediaPlayer.start(); 52 } 53 }
服务端配置好了后,手机端点击播放按钮,不一会,萌萌哒初音就开始唱歌了
小故事:
之所以会突然想写这个 demo,主要是因为楼主很久以前的毕业设计是写的 Android 播放器,当时不知道为什么在播放在线歌曲的时候失败了,现在莫名的想弄清楚这个问题,刚好 python 写后端挺方便的(之前毕设是用 java 写的后端),所以就尝试了一下,结果发现可以正常的播放在线歌曲嘛。
同时如果用浏览器打开这个地址,浏览器会自动播放音乐,注意必须将 Content-Type 设置为 audio/mp3,如果设置成 text/html,浏览器就会以文本的方式显示了,很感人的一堆乱码 2333。