{ "id": "132889", "key": "TIMOB-17331", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": null, "resolutiondate": null, "created": "2014-07-10T20:05:56.000+0000", "priority": { "name": "None", "id": "6" }, "labels": [ "AudioPlayer", "change", "progress", "stopped", "stopping" ], "versions": [], "issuelinks": [], "assignee": null, "updated": "2018-02-28T20:03:11.000+0000", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "h4. Problem Description\r\nAudioPlayer progress event stops firing when state changes to stopping. \r\n\r\nh5. Test Environments\r\n\r\nTi CLI 3.3.0-rc\r\nTitanium SDK: 3.3.0.RC, 3.2.X.GA\r\niOS Simulator 7.1 \r\n \r\nh5. Test Code \r\n{code}\r\nvar win = Titanium.UI.createWindow({\r\ntitle:'Audio Test',\r\nbackgroundColor:'#fff',\r\nlayout: 'vertical'\r\n});\r\nvar startStopButton = Titanium.UI.createButton({\r\ntitle:'Start/Stop Streaming',\r\ntop:10,\r\nwidth:200,\r\nheight:40\r\n});\r\nvar pauseResumeButton = Titanium.UI.createButton({\r\ntitle:'Pause/Resume Streaming',\r\ntop:10,\r\nwidth:200,\r\nheight:40,\r\nenabled:false\r\n});\r\nwin.add(startStopButton);\r\nwin.add(pauseResumeButton);\r\n// allowBackground: true on Android allows the\r\n// player to keep playing when the app is in the\r\n// background.\r\nvar audioPlayer = Ti.Media.createAudioPlayer({\r\nurl: 'https://ia600200.us.archive.org/1/items/testmp3testfile/mpthreetest.mp3',\r\nallowBackground: true\r\n});\r\nstartStopButton.addEventListener('click',function() {\r\n// When paused, playing returns false.\r\n// If both are false, playback is stopped.\r\nif (audioPlayer.playing || audioPlayer.paused)\r\n{\r\naudioPlayer.stop();\r\npauseResumeButton.enabled = false;\r\nif (Ti.Platform.name === 'android')\r\n{\r\naudioPlayer.release();\r\n}\r\n}\r\nelse\r\n{\r\naudioPlayer.start();\r\npauseResumeButton.enabled = true;\r\n}\r\n});\r\npauseResumeButton.addEventListener('click', function() {\r\nif (audioPlayer.paused) {\r\naudioPlayer.start();\r\n}\r\nelse {\r\naudioPlayer.pause();\r\n}\r\n});\r\naudioPlayer.addEventListener('progress',function(e) {\r\nTi.API.info('Time Played: ' + Math.round(e.progress) + ' milliseconds');\r\n});\r\naudioPlayer.addEventListener('change',function(e)\r\n{\r\nTi.API.info('State: ' + e.description + ' (' + e.state + ')');\r\n});\r\nwin.addEventListener('close',function() {\r\naudioPlayer.stop();\r\nif (Ti.Platform.osname === 'android')\r\n{\r\naudioPlayer.release();\r\n}\r\n});\r\nwin.open();\r\n \r\n{code}\r\n \r\n \r\nh5. IOS Output \r\n{code} \r\n[INFO] : State: starting (1)\r\n[INFO] : State: waiting_for_data (2)\r\n[INFO] : State: waiting_for_queue (3)\r\n[INFO] : State: playing (4)\r\n[INFO] : Time Played: 360 milliseconds\r\n[INFO] : Time Played: 1360 milliseconds\r\n[INFO] : Time Played: 2361 milliseconds\r\n[INFO] : Time Played: 3360 milliseconds\r\n[INFO] : Time Played: 4360 milliseconds\r\n[INFO] : Time Played: 5361 milliseconds\r\n[INFO] : Time Played: 6360 milliseconds\r\n[INFO] : Time Played: 7360 milliseconds\r\n[INFO] : Time Played: 8361 milliseconds\r\n[INFO] : Time Played: 9360 milliseconds\r\n[INFO] : State: stopping (6)\r\n[INFO] : State: stopped (7)\r\n[INFO] : State: initialized (0)\r\n{code}\r\n \r\nh5. STEPS TO TEST\r\n\r\n1. Create a new project\r\n2. Update app.js file with sample code\r\n4. And run on Android emulator and iOS simulator\r\n5. Remote audio will play. \r\n\r\nh5. Test Result \r\nIn iOS AudioPlayer progress event stops firing when state changes to stopping\r\n\r\n\r\nThanks ", "attachment": [], "flagged": false, "summary": "iOS: AudioPlayer progress event stops firing when state changes to stopping", "creator": { "name": "oshevans", "key": "oshevans", "displayName": "Osian Evans", "active": true, "timeZone": "Europe/London" }, "subtasks": [], "reporter": { "name": "oshevans", "key": "oshevans", "displayName": "Osian Evans", "active": true, "timeZone": "Europe/London" }, "environment": "Mac / iPhone simulator and device\r\nTitanium Studio, build: 3.2.3.201404181442\r\nsdk-version 3.2.0.GA", "comment": { "comments": [ { "id": "313309", "author": { "name": "oshevans", "key": "oshevans", "displayName": "Osian Evans", "active": true, "timeZone": "Europe/London" }, "body": "*CODE SAMPLE*\r\n{noformat}\r\nvar audioPlayer = Ti.Media.createAudioPlayer({\r\n url: \"https://ia600200.us.archive.org/1/items/testmp3testfile/mpthreetest.mp3\" // THIS AUDIO IS 12 SECONDS LONG\r\n});\r\n \r\naudioPlayer.addEventListener('progress', function(e) {\r\n // THIS ONLY GOES UP TO AROUND 9 SECONDS\r\n Ti.API.info('AUDIO : Time Played ('+e.progress+') : approx ' + Math.round(e.progress/1000) + ' seconds');\r\n});\r\n \r\naudioPlayer.addEventListener('change', function(e) {\r\n Ti.API.info('AUDIO : change : '+e.description+' ('+e.state+')');\r\n});\r\n \r\naudioPlayer.start();\r\n{noformat}\r\n\r\nThis produces the following output : \r\n\r\n{noformat}\r\n[INFO] AUDIO : change : starting (1)\r\n[INFO] AUDIO : change : waiting_for_data (2)\r\n[INFO] AUDIO : change : waiting_for_queue (3)\r\n[INFO] AUDIO : change : playing (4)\r\n[INFO] AUDIO : Time Played (574.5804988662132): 1 seconds\r\n[INFO] AUDIO : Time Played (1574.5351473922901): 2 seconds\r\n[INFO] AUDIO : Time Played (2574.603174603175): 3 seconds\r\n[INFO] AUDIO : Time Played (3574.5351473922906): 4 seconds\r\n[INFO] AUDIO : Time Played (4574.557823129251): 5 seconds\r\n[INFO] AUDIO : Time Played (5574.557823129251): 6 seconds\r\n[INFO] AUDIO : Time Played (6574.53514739229): 7 seconds\r\n[INFO] AUDIO : Time Played (7574.557823129251): 8 seconds\r\n[INFO] AUDIO : Time Played (8574.53514739229): 9 seconds\r\n[INFO] AUDIO : change : stopping (6)\r\n[INFO] AUDIO : change : stopped (7)\r\n[INFO] AUDIO : change : initialized (0)\r\n{noformat}", "updateAuthor": { "name": "oshevans", "key": "oshevans", "displayName": "Osian Evans", "active": true, "timeZone": "Europe/London" }, "created": "2014-07-10T20:07:42.000+0000", "updated": "2014-07-10T20:12:49.000+0000" }, { "id": "314165", "author": { "name": "mpmiranda", "key": "mpmiranda", "displayName": "Mauro Parra-Miranda", "active": true, "timeZone": "America/Mexico_City" }, "body": "Thanks for you report! The priority will be set by the platform team. ", "updateAuthor": { "name": "mpmiranda", "key": "mpmiranda", "displayName": "Mauro Parra-Miranda", "active": true, "timeZone": "America/Mexico_City" }, "created": "2014-07-15T16:32:16.000+0000", "updated": "2014-07-15T16:32:16.000+0000" }, { "id": "318608", "author": { "name": "shameerj", "key": "shameerj", "displayName": "Shameer Jan", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Issue reproduces \r\nTitanium Command-Line Interface, \r\nCLI version 3.3.0, \r\nTitanium SDK version 3.3.0.GA \r\niOS SDK: 7.1 \r\niOS iPhone Simulator: 7.1", "updateAuthor": { "name": "shameerj", "key": "shameerj", "displayName": "Shameer Jan", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-08-14T05:30:37.000+0000", "updated": "2014-08-14T05:30:37.000+0000" } ], "maxResults": 4, "total": 4, "startAt": 0 } } }