var win = Titanium.UI.createWindow({
title:'Audio Test',
backgroundColor:'#fff',
layout: 'vertical'
});
var startStopButton = Titanium.UI.createButton({
title:'Start/Stop Streaming',
top:10,
width:200,
//height:40
});
var pauseResumeButton = Titanium.UI.createButton({
title:'Pause/Resume Streaming',
top:10,
width:200,
//height:40,
enabled:false
});
win.add(startStopButton);
win.add(pauseResumeButton);
// allowBackground: true on Android allows the
// player to keep playing when the app is in the
// background.
var audioUrl = 'http://broadcast.infomaniak.net:80/energyzuerich-high.mp3';
var audioPlayer = Ti.Media.createAudioPlayer({
url: audioUrl,
allowBackground: true
});
startStopButton.addEventListener('click',function() {
// When paused, playing returns false.
// If both are false, playback is stopped.
if (audioPlayer.playing || audioPlayer.paused)
{
audioPlayer.stop();
pauseResumeButton.enabled = false;
if (Ti.Platform.name === 'android')
{
audioPlayer.release();
}
}
else
{
audioPlayer.start();
pauseResumeButton.enabled = true;
}
});
pauseResumeButton.addEventListener('click', function() {
if (audioPlayer.paused) {
audioPlayer.start();
}
else {
audioPlayer.pause();
}
});
audioPlayer.addEventListener('progress',function(e) {
Ti.API.info('Time Played: ' + Math.round(e.progress) + ' milliseconds');
});
audioPlayer.addEventListener('change',function(e)
{
Ti.API.info('State: ' + e.description + ' (' + e.state + ')');
});
win.addEventListener('close',function() {
audioPlayer.stop();
if (Ti.Platform.osname === 'android')
{
audioPlayer.release();
}
});
var bc = Ti.Android.createBroadcastReceiver({
onReceived : function(e) {
Ti.API.info('****************** Handling broadcast: ');
if (e.intent) {
var state = e.intent.getStringExtra("state");
Ti.API.info("phone state: " + state);
if (state === "RINGING") {
// Incoming call. Pause the audio.
Ti.API.info("RINGING");
audioPlayer.pause()
}
if (state === "OFFHOOK") {
// A call is dialing, active or on hold
Ti.API.info("OFFHOOK");
}
if (state === "IDLE") {
// Not in call. Resume the audio.
Ti.API.info("IDLE");
audioPlayer.start()
}
}
}
});
Ti.Android.registerBroadcastReceiver(bc, ["android.intent.action.PHONE_STATE"]);
win.open();
In order to get the phone state, the READ_PHONE_STATE permission is required. So please add the permission to the tiapp.xml: