How to keep bluetooth connection in background?

2020-02-09 11:50发布

问题:

i am writing a bluetooth app communicating with a bluetooth module. Actually it works very well. But i want the connection to stay established also while the app is in background and other apps are used, so that another activity like incoming sms or something else can trigger my app in background to send messages to my device.

Until now i am very confused how to do this. Can anyone give me advice?

I also checked this: Background Bluetooth App - Threading? but it doesn't help me.

Here is my code so far: http://pastebin.com/C7Uynuan

Side information: there is a connect button, which establishs the connection and then there are 3 other buttons sending different messages to my device. In OnResume i reconnect to my device, but this should be not necessary when having a stable connection.

Thanks,

progNewfag

EDIT: Now i am pretty sure that i need to use an IntentService, but not sure how.

回答1:

You Have to learn the service first

Here is the Example of Service

Create a new Class and Name it for Exmaple: MyService

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;

public class MyService extends Service {
    public MyService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        return Null;
    }

    @Override
    public void onCreate() {
        Toast.makeText(this, "The new Service was Created", Toast.LENGTH_LONG).show();

    }

    @Override
    public void onStart(Intent intent, int startId) {
        // For time consuming an long tasks you can launch a new thread here...
        // Do your Bluetooth Work Here
        Toast.makeText(this, " Service Started", Toast.LENGTH_LONG).show();

        }

        @Override
        public void onDestroy() {
            Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();

        }
    }

Now in your main activity you can start the service through this code

 startService(new Intent(this, MyService.class));

For Stopping the service put this code in MainActivity

stopService(new Intent(this, MyService.class));

See this Post

Connection between Activity and Service

Also See this link

http://www.javacodegeeks.com/2014/01/android-service-tutorial.html

http://examples.javacodegeeks.com/android/core/service/android-service-example/

EDIT:

Example: Communication between Activity and Service using Messaging

http://www.intertech.com/Blog/using-localbroadcastmanager-in-service-to-activity-communications/