Streaming music is working now just configuring the streaming system in the currently playing screen

This commit is contained in:
Okechi 2016-03-04 11:35:28 -05:00
parent 8c4ae2e7e7
commit fd913dca95
6 changed files with 32 additions and 27 deletions

View File

@ -69,7 +69,7 @@ extension JoiningPartyViewController: PartyServiceManagerDelegate {
func connectedWithPeer(peerID: MCPeerID) { func connectedWithPeer(peerID: MCPeerID) {
println("mark 2") println("mark 2")
var dictionary: [String: String] = ["sender": self.party.myPeerID.displayName, "instruction": "joined_party"] var dictionary: Dictionary<String,String> = ["sender": self.party.myPeerID.displayName, "instruction": "joined_party"]
self.party.sendInstruction(dictionary, toPeer: peerID) self.party.sendInstruction(dictionary, toPeer: peerID)
} }

View File

@ -130,6 +130,10 @@ class LoadingPartyViewController: UIViewController, UICollectionViewDataSource,
}else{ }else{
var dictionary: [String: String] = ["sender": self.party.myPeerID.displayName, "instruction": "start_party"] var dictionary: [String: String] = ["sender": self.party.myPeerID.displayName, "instruction": "start_party"]
self.party.sendInstruction(dictionary, toPeer: joinedPeer! ) self.party.sendInstruction(dictionary, toPeer: joinedPeer! )
//start streaming to connected peers
self.party.outputStreamers[joinedPeer!.displayName]!.start()
} }
} }
@ -204,7 +208,12 @@ extension LoadingPartyViewController: PartyServiceManagerDelegate {
//open stream with peer //open stream with peer
let stream = self.party.outputStreamForPeer(fromPeer) let stream = self.party.outputStreamForPeer(fromPeer)
self.party.outputStreamer = TDAudioOutputStreamer(outputStream: stream) self.party.outputStreamers[fromPeer.displayName] = TDAudioOutputStreamer(outputStream: stream)
self.party.outputStreamers[fromPeer.displayName]!.streamAudioFromURL((self.party.currentSong.valueForProperty(MPMediaItemPropertyAssetURL) as! NSURL))
/* /*

View File

@ -1056,6 +1056,7 @@
</subviews> </subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</view> </view>
<nil key="simulatedTopBarMetrics"/>
<simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina4"/> <simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina4"/>
<connections> <connections>
<outlet property="invitedFriends" destination="fnx-cI-MJO" id="9Ec-6U-lHi"/> <outlet property="invitedFriends" destination="fnx-cI-MJO" id="9Ec-6U-lHi"/>
@ -1452,9 +1453,7 @@
<connections> <connections>
<outlet property="searchDisplayController" destination="Le1-SR-p7g" id="B5Z-qo-0DN"/> <outlet property="searchDisplayController" destination="Le1-SR-p7g" id="B5Z-qo-0DN"/>
<outlet property="table" destination="iAI-5U-c8e" id="hcz-UQ-Mmg"/> <outlet property="table" destination="iAI-5U-c8e" id="hcz-UQ-Mmg"/>
<segue destination="C6s-vA-8F4" kind="popoverPresentation" identifier="LoadingPartySegue" popoverAnchorView="iAI-5U-c8e" id="zDR-tX-KYY"> <segue destination="C6s-vA-8F4" kind="presentation" identifier="LoadingPartySegue" id="zDR-tX-KYY"/>
<popoverArrowDirection key="popoverArrowDirection" up="YES" down="YES" left="YES" right="YES"/>
</segue>
</connections> </connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="f9E-Q6-Co1" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="f9E-Q6-Co1" userLabel="First Responder" sceneMemberID="firstResponder"/>
@ -1650,6 +1649,6 @@
<segue reference="5pn-ck-WiI"/> <segue reference="5pn-ck-WiI"/>
<segue reference="hDN-yC-fGj"/> <segue reference="hDN-yC-fGj"/>
<segue reference="41S-h6-flP"/> <segue reference="41S-h6-flP"/>
<segue reference="OpG-wQ-NAH"/> <segue reference="8uU-Fo-Lw5"/>
</inferredMetricsTieBreakers> </inferredMetricsTieBreakers>
</document> </document>

View File

@ -59,13 +59,12 @@ class PartyServiceManager: NSObject {
//party-creator variables //party-creator variables
var currentSong: MPMediaItem! = nil var currentSong: MPMediaItem! = nil
var outputStreamer: TDAudioOutputStreamer! var outputStreamers: Dictionary<String, TDAudioOutputStreamer> = Dictionary<String, TDAudioOutputStreamer>()
//party-guest variables //party-guest variables
var currentSongTitle: String! var currentSongTitle: String!
var currentSongArtistAlbum: String! var currentSongArtistAlbum: String!
var currentSongIMG: UIImage! var currentSongIMG: UIImage!
var songStream: NSInputStream!
var inputStreamer: TDAudioInputStreamer! var inputStreamer: TDAudioInputStreamer!
@ -329,11 +328,9 @@ extension PartyServiceManager: MCSessionDelegate{
NSLog("%@", "didRecieveStream: \(streamName) from peer: \(peerID)") NSLog("%@", "didRecieveStream: \(streamName) from peer: \(peerID)")
if streamName == "music" { if streamName == "music" {
self.songStream = stream
self.inputStreamer = TDAudioInputStreamer(inputStream: stream) self.inputStreamer = TDAudioInputStreamer(inputStream: stream)
self.songStream.delegate = self // self.songStream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
self.songStream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode) self.inputStreamer.start()
//self.songStream.open()
} }
@ -350,17 +347,7 @@ extension PartyServiceManager: MCSessionDelegate{
} }
extension PartyServiceManager: NSStreamDelegate {
func stream(aStream: NSStream, handleEvent eventCode: NSStreamEvent) {
if(eventCode == NSStreamEvent.HasBytesAvailable){
println("data available in stream")
}else if(eventCode == NSStreamEvent.EndEncountered) {
println("stream ended")
}else if(eventCode == NSStreamEvent.ErrorOccurred) {
println("stream error occured")
}
}
}
//state extensions //state extensions

View File

@ -279,7 +279,7 @@ class SongSelectionViewController: UIViewController, UITableViewDelegate, UITabl
for i_peer in self.party.invitedFriends{ for i_peer in self.party.invitedFriends{
for peer in self.party.foundPeers { for peer in self.party.foundPeers {
if (peer.displayName == i_peer.displayName){ if (peer.displayName == i_peer.displayName){
self.party.serviceBrowser.invitePeer(peer, toSession: self.party.session, withContext: nil, timeout: 1000.0) self.party.serviceBrowser.invitePeer(peer, toSession: self.party.session, withContext: nil, timeout: 70.0)
break break
} }

View File

@ -183,14 +183,24 @@ class TestInviteFriendsController: UIViewController, UITableViewDelegate, UITabl
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell = table.cellForRowAtIndexPath(indexPath) as? TestInviteFriendsCell let cell = table.cellForRowAtIndexPath(indexPath) as? TestInviteFriendsCell
//println(cell?.friendName.text)
//println(indexPath.row)
var index = 0
if self.isFriendSelected[indexPath.row] == false{ for(var i = 0; i < self.frnds.count; i++){
if(self.frnds[i].displayName == cell?.friendName.text){
index = i
break
}
}
if self.isFriendSelected[index] == false{
cell!.rdioButton.setBackgroundImage(UIImage(named: "Blue Check.png"), forState: UIControlState.Normal) cell!.rdioButton.setBackgroundImage(UIImage(named: "Blue Check.png"), forState: UIControlState.Normal)
self.isFriendSelected[indexPath.row] = true self.isFriendSelected[index] = true
} }
else{ else{
cell!.rdioButton.setBackgroundImage(UIImage(named: "Tap Circle.png"), forState: UIControlState.Normal) cell!.rdioButton.setBackgroundImage(UIImage(named: "Tap Circle.png"), forState: UIControlState.Normal)
self.isFriendSelected[indexPath.row] = false self.isFriendSelected[index] = false
} }