我正在制作一个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并使其数据源读入字节数组并同时播放?