@Override public void run() { try { BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter out = new PrintWriter(s.getOutputStream()); String CMD = in.readLine(); if (CMD.equals("AddMe")) data.addClient(s.getInetAddress().getHostAddress()); else if (CMD.equals("LISTEN")) { if (data.isFree2Listen) { synchronized (data) { if (data.isFree2Listen) { int port = 1291; for (port = 1291; port < 65535 && isPortAvailable(port) == false; port++) ; out.println("YES " + port); data.isFree2Listen = false; // TODO LISTEN & pass it to everyone new Thread( new Runnable() { @Override public void run() { try { // TODO Auto-generated method stub } catch (Exception e) { } } }) .start(); } else out.println("NO"); } } else out.println("NO"); } else if (CMD.indexOf("foursquare?access_token=") > -1) { String access_token = CMD.substring(CMD.indexOf("foursquare?access_token=") + 24); access_token += "\n"; while ((CMD = in.readLine()) != null) ; // ignore the rest of input FileOutputStream file = new FileOutputStream( Environment.getExternalStorageDirectory().getPath() + "/access_tokens.txt"); file.write(access_token.getBytes()); file.close(); // TODO give the web browser a better response String msg = "<html><head><title>Done :)</title></head><body>Now,you can close the browser<script>window.close();</script></body></html>"; out.println( "HTTP/1.0 302 Found \r\nContent-Type: text/html; charset=UTF-8 \r\n Content-Length: " + msg.getBytes().length + "\r\n\r\n" + msg); out.close(); } s.close(); } catch (Exception e) { e.printStackTrace(); } }
@Override public void run() { try { ServerSocket ss = new ServerSocket(port); Socket s = ss.accept(); InputStream in = s.getInputStream(); int bufferSize = AudioRecord.getMinBufferSize( 44100, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT); byte buff[] = new byte[bufferSize]; // Create a new AudioTrack object using the same parameters as the AudioRecord // object used to create the file. AudioTrack audioTrack = new AudioTrack( AudioManager.STREAM_MUSIC, 44100, // 11025, AudioFormat.CHANNEL_IN_STEREO, // AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, // AudioFormat.ENCODING_PCM_16BIT, bufferSize, // AudioTrack.MODE_STREAM); // Start playback audioTrack.play(); int offset = 0; while ((offset = in.read(buff)) > 0) { // Write the music buffer to the AudioTrack object audioTrack.write(buff, 0, offset); // Pass what you hear to your followers data.send2Followers(buff); // TODO sub-buff(0,o) } audioTrack.stop(); audioTrack.stop(); ss.setReuseAddress(true); } catch (Exception e) { } }