Android从套接字播放字节数据

时间:2018-04-05 06:32:10

标签: android sockets streaming

我正在制作一个Android音乐播放器。该应用程序的一个功能是它可以通过套接字连接到另一个设备,然后通过该连接流文件。现在,我让应用程序通过ServerSocket连接到我的计算机。我想要的是在我的笔记本电脑上加载一个mp3,从文件中获取所有字节并通过套接字发送它们。然后Android应用程序应该在收到它们时播放字节。我能够将所有字节写入手机上的mp3文件,但我想知道是否有一种方法可以播放字节,因为它们无需下载即可。我正在使用MediaPlayer进行播放。

这是我在Android应用程序上用于接收数据的代码。

            Socket socket = new Socket("ip", port);
            out = new DataOutputStream(socket.getOutputStream());


            out.write("0\r\n".getBytes());
            out.flush();

            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            InputStream inS = socket.getInputStream();
            String line;

            FileOutputStream newFile = new FileOutputStream(path+"test.mp3");
            byte[] by = new byte[BUFFER_SIZE];
            int read;
            do{
                read = inS.read(by,0,BUFFER_SIZE);
                newFile.write(by,0,read);
           }while(read>0);

这是笔记本电脑上的代码(服务器端)。

       Path path = "path to mp3";
        byte[] b = Files.readAllBytes(path);

        int portNum = 5000;
        ServerSocket ss = new ServerSocket(portNum);

        while(true)
        {
            System.out.println("waiting for connection:");
            Socket clientSocket = ss.accept();
            System.out.println("Got client");

            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

            String line = in.readLine();

            DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream());


            System.out.println(line);

        byte[] by = new byte[BUFFER_SIZE];
                FileInputStream s = new FileInputStream(path.toString());
                    int rc = s.read(by);

                    while(rc>0)
                    {
                        System.out.println(rc);
                        out.write(by,0,rc);
                        rc = s.read(by,0,BUFFER_SIZE);
                    }
                    s.close();

有没有办法可以创建MediaPlayer并使其数据源读入字节数组并同时播放?

0 个答案:

没有答案