| | |
| | | import android.app.NotificationManager; |
| | | import android.app.PendingIntent; |
| | | import android.app.Service; |
| | | import android.content.ComponentName; |
| | | import android.content.Context; |
| | | import android.content.Intent; |
| | | import android.content.ServiceConnection; |
| | | import android.content.pm.PackageInfo; |
| | | import android.content.pm.PackageManager; |
| | | import android.os.Binder; |
| | | import android.os.Build; |
| | | import android.os.Handler; |
| | | import android.os.IBinder; |
| | | import android.os.SystemClock; |
| | | import android.support.v4.app.NotificationCompat; |
| | | import android.telecom.ConnectionService; |
| | | |
| | | |
| | | import com.google.gson.Gson; |
| | | import com.hdl.hdllinphonesdk.R; |
| | | import com.hdl.hdllinphonesdk.activity.HDLLinphoneIntercomActivity; |
| | | import com.hdl.hdllinphonesdk.activity.HDLLinphoneReverseCallActivity; |
| | |
| | | public class HDLLinphoneService extends Service { |
| | | private static final String START_LINPHONE_LOGS = " ==== HDLLinphoneService ===="; |
| | | // Keep a static reference to the Service so we can access it from anywhere in the app |
| | | private static HDLLinphoneService sInstance; |
| | | private volatile static HDLLinphoneService sInstance; |
| | | |
| | | private PendingIntent mKeepAlivePendingIntent; |
| | | private static PhoneCallback sPhoneCallback;//通话状态回调 |
| | |
| | | return sInstance.mCore; |
| | | } |
| | | |
| | | public class LinphoneBinder extends Binder { |
| | | |
| | | public HDLLinphoneService getService() { |
| | | return HDLLinphoneService.this; |
| | | } |
| | | } |
| | | |
| | | private final IBinder binder = new LinphoneBinder(); |
| | | |
| | | @Override |
| | | public IBinder onBind(Intent intent) { |
| | | return null; |
| | | return binder; |
| | | } |
| | | |
| | | /** |
| | |
| | | @Override |
| | | public int onStartCommand(Intent intent, int flags, int startId) { |
| | | super.onStartCommand(intent, flags, startId); |
| | | /* if (sInstance != null) { |
| | | return START_STICKY; |
| | | }*/ |
| | | return START_STICKY; |
| | | } |
| | | |
| | | |
| | | public void initCore() { |
| | | |
| | | // If our Service is already running, no need to continue |
| | | if (sInstance != null) { |
| | | return START_STICKY; |
| | | } |
| | | |
| | | |
| | | // Our Service has been started, we can keep our reference on it |
| | | // From now one the Launcher will be able to call onServiceReady() |
| | |
| | | mTimer = new Timer("Linphone scheduler"); |
| | | mTimer.schedule(lTask, 0, 20); |
| | | |
| | | return START_STICKY; |
| | | } |
| | | |
| | | @Override |
| | |
| | | String basePath = getFilesDir().getAbsolutePath(); |
| | | Factory.instance().setLogCollectionPath(basePath); |
| | | Factory.instance().enableLogCollection(LogCollectionState.Enabled); |
| | | Factory.instance().setDebugMode(false, getString(R.string.app_name)); |
| | | Factory.instance().setDebugMode(true, "HDLLinphone"); |
| | | // Dump some useful information about the device we're running on |
| | | // HDLLog.I(START_LINPHONE_LOGS); |
| | | // dumpDeviceInformation(); |
| | |
| | | @Override |
| | | public void onRegistrationStateChanged(Core core, ProxyConfig proxyConfig, RegistrationState registrationState, String message) { |
| | | String state = registrationState.toString(); |
| | | HDLLog.i(START_LINPHONE_LOGS, "registrationState: " + state); |
| | | HDLLog.i(START_LINPHONE_LOGS, "registrationState: " + state + ",message:" + message); |
| | | |
| | | HDLLog.i(START_LINPHONE_LOGS, "Registration info=" + new Gson().toJson(proxyConfig)); |
| | | if (state.equals(RegistrationState.None.toString())) { |
| | | if (sRegistrationCallback != null) { |
| | | sRegistrationCallback.registrationNone(); |