Emeric Vigier | cf6d51e | 2012-09-19 14:28:35 -0400 | [diff] [blame] | 1 | package com.savoirfairelinux.sflphone.client; |
| 2 | |
Emeric Vigier | cc0785a | 2012-11-06 19:07:48 -0500 | [diff] [blame] | 3 | import android.app.AlertDialog; |
Emeric Vigier | cf6d51e | 2012-09-19 14:28:35 -0400 | [diff] [blame] | 4 | import android.app.Application; |
Emeric Vigier | cc0785a | 2012-11-06 19:07:48 -0500 | [diff] [blame] | 5 | import android.content.Intent; |
Emeric Vigier | 6119d78 | 2012-09-21 18:04:14 -0400 | [diff] [blame] | 6 | import android.content.pm.PackageInfo; |
| 7 | import android.content.pm.PackageManager; |
| 8 | import android.content.pm.PackageManager.NameNotFoundException; |
Emeric Vigier | cf6d51e | 2012-09-19 14:28:35 -0400 | [diff] [blame] | 9 | import android.util.Log; |
| 10 | |
Emeric Vigier | 1f1ced3 | 2012-11-02 16:56:32 -0400 | [diff] [blame] | 11 | import com.savoirfairelinux.sflphone.service.ISipService; |
Emeric Vigier | cc0785a | 2012-11-06 19:07:48 -0500 | [diff] [blame] | 12 | import com.savoirfairelinux.sflphone.service.SipService; |
Emeric Vigier | 6119d78 | 2012-09-21 18:04:14 -0400 | [diff] [blame] | 13 | |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 14 | public class SFLphoneApplication extends Application |
| 15 | { |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 16 | static final String TAG = "SFLphoneApplication"; |
| 17 | private boolean serviceRunning = false; |
| 18 | private ISipService sipService; |
Emeric Vigier | cc0785a | 2012-11-06 19:07:48 -0500 | [diff] [blame] | 19 | |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 20 | 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 Vigier | cf6d51e | 2012-09-19 14:28:35 -0400 | [diff] [blame] | 42 | |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 43 | @Override |
| 44 | public void onCreate() |
| 45 | { |
| 46 | super.onCreate(); |
| 47 | Log.i(TAG, "onCreate"); |
Emeric Vigier | cc0785a | 2012-11-06 19:07:48 -0500 | [diff] [blame] | 48 | |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 49 | if (!serviceRunning) { |
| 50 | Log.i(TAG, "starting SipService"); |
| 51 | startSipService(); |
| 52 | } |
| 53 | } |
Emeric Vigier | 6119d78 | 2012-09-21 18:04:14 -0400 | [diff] [blame] | 54 | |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 55 | @Override |
| 56 | public void onTerminate() |
| 57 | { |
| 58 | super.onTerminate(); |
| 59 | Log.i(TAG, "onTerminate"); |
Emeric Vigier | cc0785a | 2012-11-06 19:07:48 -0500 | [diff] [blame] | 60 | |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 61 | if (serviceRunning) { |
| 62 | Log.i(TAG, "onDestroy: stopping SipService..."); |
| 63 | stopService(new Intent(this, SipService.class)); |
| 64 | serviceRunning = false; |
| 65 | } |
| 66 | } |
Emeric Vigier | 6119d78 | 2012-09-21 18:04:14 -0400 | [diff] [blame] | 67 | |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 68 | public boolean isServiceRunning() |
| 69 | { |
| 70 | return serviceRunning; |
| 71 | } |
Emeric Vigier | 6119d78 | 2012-09-21 18:04:14 -0400 | [diff] [blame] | 72 | |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 73 | public void setServiceRunning(boolean r) |
| 74 | { |
| 75 | this.serviceRunning = r; |
| 76 | } |
Emeric Vigier | 6119d78 | 2012-09-21 18:04:14 -0400 | [diff] [blame] | 77 | |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 78 | public ISipService getSipService() |
| 79 | { |
| 80 | return sipService; |
| 81 | } |
Emeric Vigier | 6119d78 | 2012-09-21 18:04:14 -0400 | [diff] [blame] | 82 | |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 83 | public void setSipService(ISipService service) |
| 84 | { |
| 85 | sipService = service; |
| 86 | } |
Emeric Vigier | 6119d78 | 2012-09-21 18:04:14 -0400 | [diff] [blame] | 87 | |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 88 | public String getAppPath() |
| 89 | { |
| 90 | PackageManager pkgMng = getPackageManager(); |
| 91 | String pkgName = getPackageName(); |
Emeric Vigier | 6119d78 | 2012-09-21 18:04:14 -0400 | [diff] [blame] | 92 | |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 93 | 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 Vigier | 6119d78 | 2012-09-21 18:04:14 -0400 | [diff] [blame] | 99 | |
Adrien Béraud | c99b843 | 2013-04-25 16:27:46 +1000 | [diff] [blame] | 100 | Log.d(TAG, "Application path: " + pkgName); |
| 101 | return pkgName; |
| 102 | } |
Emeric Vigier | cf6d51e | 2012-09-19 14:28:35 -0400 | [diff] [blame] | 103 | } |