blob: 4344cd9c812f27deaee3f9a55da8966d5ade573e [file] [log] [blame]
Emeric Vigiercf6d51e2012-09-19 14:28:35 -04001package com.savoirfairelinux.sflphone.client;
2
Emeric Vigiercc0785a2012-11-06 19:07:48 -05003import android.app.AlertDialog;
Emeric Vigiercf6d51e2012-09-19 14:28:35 -04004import android.app.Application;
Emeric Vigiercc0785a2012-11-06 19:07:48 -05005import android.content.Intent;
Emeric Vigier6119d782012-09-21 18:04:14 -04006import android.content.pm.PackageInfo;
7import android.content.pm.PackageManager;
8import android.content.pm.PackageManager.NameNotFoundException;
Emeric Vigiercf6d51e2012-09-19 14:28:35 -04009import android.util.Log;
10
Emeric Vigier1f1ced32012-11-02 16:56:32 -040011import com.savoirfairelinux.sflphone.service.ISipService;
Emeric Vigiercc0785a2012-11-06 19:07:48 -050012import com.savoirfairelinux.sflphone.service.SipService;
Emeric Vigier6119d782012-09-21 18:04:14 -040013
Adrien Béraudc99b8432013-04-25 16:27:46 +100014public class SFLphoneApplication extends Application
15{
Adrien Béraudc99b8432013-04-25 16:27:46 +100016 static final String TAG = "SFLphoneApplication";
17 private boolean serviceRunning = false;
18 private ISipService sipService;
Emeric Vigiercc0785a2012-11-06 19:07:48 -050019
Adrien Béraudc99b8432013-04-25 16:27:46 +100020 private void startSipService()
21 {
22 Thread thread = new Thread("StartSFLphoneService") {
23 public void run()
24 {
25 Log.i(TAG, "SipService launching thread");
26 Intent sipServiceIntent = new Intent(SFLphoneApplication.this, SipService.class);
27 //sipServiceIntent.putExtra(ServiceConstants.EXTRA_OUTGOING_ACTIVITY, new ComponentName(SFLPhoneHome.this, SFLPhoneHome.class));
28 startService(sipServiceIntent);
29 serviceRunning = true;
30 };
31 };
32 try {
33 thread.start();
34 } catch (IllegalThreadStateException e) {
35 AlertDialog.Builder builder = new AlertDialog.Builder(this);
36 builder.setMessage("Cannot start SFLPhone SipService!");
37 AlertDialog alert = builder.create();
38 alert.show();
39 //TODO exit application
40 }
41 }
Emeric Vigiercf6d51e2012-09-19 14:28:35 -040042
Adrien Béraudc99b8432013-04-25 16:27:46 +100043 @Override
44 public void onCreate()
45 {
46 super.onCreate();
47 Log.i(TAG, "onCreate");
Emeric Vigiercc0785a2012-11-06 19:07:48 -050048
Adrien Béraudc99b8432013-04-25 16:27:46 +100049 if (!serviceRunning) {
50 Log.i(TAG, "starting SipService");
51 startSipService();
52 }
53 }
Emeric Vigier6119d782012-09-21 18:04:14 -040054
Adrien Béraudc99b8432013-04-25 16:27:46 +100055 @Override
56 public void onTerminate()
57 {
58 super.onTerminate();
59 Log.i(TAG, "onTerminate");
Emeric Vigiercc0785a2012-11-06 19:07:48 -050060
Adrien Béraudc99b8432013-04-25 16:27:46 +100061 if (serviceRunning) {
62 Log.i(TAG, "onDestroy: stopping SipService...");
63 stopService(new Intent(this, SipService.class));
64 serviceRunning = false;
65 }
66 }
Emeric Vigier6119d782012-09-21 18:04:14 -040067
Adrien Béraudc99b8432013-04-25 16:27:46 +100068 public boolean isServiceRunning()
69 {
70 return serviceRunning;
71 }
Emeric Vigier6119d782012-09-21 18:04:14 -040072
Adrien Béraudc99b8432013-04-25 16:27:46 +100073 public void setServiceRunning(boolean r)
74 {
75 this.serviceRunning = r;
76 }
Emeric Vigier6119d782012-09-21 18:04:14 -040077
Adrien Béraudc99b8432013-04-25 16:27:46 +100078 public ISipService getSipService()
79 {
80 return sipService;
81 }
Emeric Vigier6119d782012-09-21 18:04:14 -040082
Adrien Béraudc99b8432013-04-25 16:27:46 +100083 public void setSipService(ISipService service)
84 {
85 sipService = service;
86 }
Emeric Vigier6119d782012-09-21 18:04:14 -040087
Adrien Béraudc99b8432013-04-25 16:27:46 +100088 public String getAppPath()
89 {
90 PackageManager pkgMng = getPackageManager();
91 String pkgName = getPackageName();
Emeric Vigier6119d782012-09-21 18:04:14 -040092
Adrien Béraudc99b8432013-04-25 16:27:46 +100093 try {
94 PackageInfo pkgInfo = pkgMng.getPackageInfo(pkgName, 0);
95 pkgName = pkgInfo.applicationInfo.dataDir;
96 } catch (NameNotFoundException e) {
97 Log.w(TAG, "Error Package name not found ", e);
98 }
Emeric Vigier6119d782012-09-21 18:04:14 -040099
Adrien Béraudc99b8432013-04-25 16:27:46 +1000100 Log.d(TAG, "Application path: " + pkgName);
101 return pkgName;
102 }
Emeric Vigiercf6d51e2012-09-19 14:28:35 -0400103}