blob: 1188d28b9d019ca0651a513015ea2f868d342de3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
package com.smartdevicelink.proxy;
import java.io.IOException;
import android.graphics.Bitmap;
import com.smartdevicelink.proxy.rpc.OnLockScreenStatus;
import com.smartdevicelink.proxy.rpc.enums.HMILevel;
import com.smartdevicelink.proxy.rpc.enums.LockScreenStatus;
import com.smartdevicelink.util.HttpUtils;
public class LockScreenManager {
public interface OnLockScreenIconDownloadedListener{
public void onLockScreenIconDownloaded(Bitmap icon);
public void onLockScreenIconDownloadError(Exception e);
}
private Bitmap lockScreenIcon;
private Boolean bUserSelected = false;
private Boolean bDriverDistStatus = null;
private HMILevel hmiLevel = null;
@SuppressWarnings("unused")
private int iSessionID;
public synchronized void setSessionID(int iVal)
{
iSessionID = iVal;
}
private synchronized void setUserSelectedStatus(boolean bVal)
{
bUserSelected = bVal;
}
public synchronized void setDriverDistStatus(boolean bVal)
{
bDriverDistStatus = bVal;
}
public synchronized void setHMILevel(HMILevel hmiVal)
{
hmiLevel = hmiVal;
if ( (hmiVal.equals(HMILevel.HMI_FULL)) || (hmiVal.equals(HMILevel.HMI_LIMITED)) )
setUserSelectedStatus(true);
else if (hmiVal.equals(HMILevel.HMI_NONE))
setUserSelectedStatus(false);
}
public synchronized OnLockScreenStatus getLockObj(/*int SessionID*/)
{
//int iSessionID = SessionID;
OnLockScreenStatus myLock = new OnLockScreenStatus();
myLock.setDriverDistractionStatus(bDriverDistStatus);
myLock.setHMILevel(hmiLevel);
myLock.setUserSelected(bUserSelected);
myLock.setShowLockScreen(getLockScreenStatus());
return myLock;
}
private synchronized LockScreenStatus getLockScreenStatus()
{
if ( (hmiLevel == null) || (hmiLevel.equals(HMILevel.HMI_NONE)) )
{
return LockScreenStatus.OFF;
}
else if ( hmiLevel.equals(HMILevel.HMI_BACKGROUND) )
{
if (bDriverDistStatus == null)
{
//we don't have driver distraction, lockscreen is entirely based on userselection
if (bUserSelected)
return LockScreenStatus.REQUIRED;
else
return LockScreenStatus.OFF;
}
else if (bDriverDistStatus && bUserSelected)
{
return LockScreenStatus.REQUIRED;
}
else if (!bDriverDistStatus && bUserSelected)
{
return LockScreenStatus.OPTIONAL;
}
else
{
return LockScreenStatus.OFF;
}
}
else if ( (hmiLevel.equals(HMILevel.HMI_FULL)) || (hmiLevel.equals(HMILevel.HMI_LIMITED)) )
{
if ( (bDriverDistStatus != null) && (!bDriverDistStatus) )
{
return LockScreenStatus.OPTIONAL;
}
else
return LockScreenStatus.REQUIRED;
}
return LockScreenStatus.OFF;
}
public void downloadLockScreenIcon(final String url, final OnLockScreenIconDownloadedListener l){
new Thread(new Runnable(){
@Override
public void run(){
try{
lockScreenIcon = HttpUtils.downloadImage(url);
if(l != null){
l.onLockScreenIconDownloaded(lockScreenIcon);
}
}catch(IOException e){
if(l != null){
l.onLockScreenIconDownloadError(e);
}
}
}
}).start();
}
public Bitmap getLockScreenIcon(){
return this.lockScreenIcon;
}
}
|