首先在Service文件中,建立socket连接,以及相应的输入流,并完成广播的发送:
public class MyService extends Service {
private ServerSocket serverSocket;
private Socket socket;
private InputStream inputStream;
public int onStartCommand(final Intent intent, int flags, int startId) {
new Thread(new Runnable() {
@Override
public void run() {
try {
serverSocket = new ServerSocket(9600);
socket = serverSocket.accept();
inputStream = socket.getInputStream();
int size = 65000;
byte[] bt = new byte[size];
while(true) {Intent pictureIntent = new Intent();
pictureIntent.putExtra("picture_car",bt);
pictureIntent.setAction("com.melo.hurryup.Myservice_Picture");
sendBroadcast(pictureIntent);
Thread.sleep(80);
}
}catch (Exception e) {
e.printStackTrace();
Log.i("test","连接失败");
Toast.makeText(getApplicationContext(), "无法连接", Toast.LENGTH_LONG).show();
}
}
}).start();
在Activity中完成BroadcastReceiver的注册,并建立一个新的类继承BroadcastReceiver,在这个继承类中接收传输的byte数据,并进行Bitmap处理,以及赋给imageview,实现图片的更新。
public class MainActivity extends AppCompatActivity {
mTimeBroadcast = new MyTimeBroadcast();
mTimeBroadcast = new MyTimeBroadcast();
IntentFilter filter1 = new IntentFilter();
filter1.addAction("com.melo.hurryup.Myservice_Picture");
registerReceiver(mTimeBroadcast, filter1);
public class MyTimeBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
byte[] get_data = intent.getByteArrayExtra("picture_car");
Bitmap bitmap = BitmapFactory.decodeByteArray(get_data,0,65000);
image1.setImageBitmap(bitmap);
}
}
}