Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F61177416
PhoneManager.java
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sun, May 5, 00:54
Size
8 KB
Mime Type
text/x-java
Expires
Tue, May 7, 00:54 (2 d)
Engine
blob
Format
Raw Data
Handle
17476302
Attached To
R9555 Android app for multimodal data acquisition from wearables
PhoneManager.java
View Options
package
ch.epfl.esl.elevatedmonitor.Devices.Phone
;
import
android.content.Context
;
import
android.hardware.Sensor
;
import
android.hardware.SensorEvent
;
import
android.hardware.SensorEventListener
;
import
android.hardware.SensorManager
;
import
android.os.BatteryManager
;
import
android.os.Build
;
import
android.util.Log
;
import
java.util.Calendar
;
import
ch.epfl.esl.elevatedmonitor.Devices.Phone.Sensors.Accelerometer
;
import
ch.epfl.esl.elevatedmonitor.Devices.Phone.Sensors.Light
;
import
ch.epfl.esl.elevatedmonitor.Devices.Phone.Sensors.Proximity
;
import
ch.epfl.esl.elevatedmonitor.Devices.Phone.Sensors.Temperature
;
import
ch.epfl.esl.elevatedmonitor.Interfaces.InterfaceManager
;
import
ch.epfl.esl.elevatedmonitor.ServiceManager
;
import
ch.epfl.esl.elevatedmonitor.SuperClasses.Device
;
import
ch.epfl.esl.elevatedmonitor.SuperClasses.Manager
;
import static
android.content.Context.BATTERY_SERVICE
;
public
class
PhoneManager
extends
Manager
implements
InterfaceManager
,
SensorEventListener
{
private
SensorManager
mSensorManager
;
private
static
String
TAG
=
"Phone Man SQUINCI"
;
private
Phone
myPhone
=
null
;
//--- Constructor
public
PhoneManager
(
Context
context
)
{
super
(
context
,
TAG
);
}
@Override
public
void
scan
()
{
boolean
alreadyThere
=
false
;
for
(
Device
device
:
getScannedDevices
())
{
if
(
device
.
getId
().
equals
(
Build
.
MODEL
))
{
alreadyThere
=
true
;
break
;
}
}
if
(!
alreadyThere
)
{
myPhone
=
new
Phone
(
managerContext
);
addScannedDevice
(
myPhone
);
ServiceManager
.
startActionScanned
(
managerContext
);
Log
.
d
(
TAG
,
"Phone has been scanned"
);
}
}
@Override
public
void
isDevice
(
String
name
,
String
address
)
{
}
@Override
public
void
stopScan
()
{
}
@Override
public
void
connect
(
String
id
)
{
boolean
alreadyThere
=
false
;
for
(
Device
cd
:
getConnectedDevice
())
{
if
(
cd
.
getId
().
equals
(
id
))
{
alreadyThere
=
true
;
break
;
}
}
if
(!
alreadyThere
)
{
for
(
Device
device
:
getScannedDevices
())
{
if
(
device
.
getId
().
equals
(
id
))
{
//--- Add connected device to list
myPhone
.
setConnected
(
true
);
addConnectedDevice
(
myPhone
);
//--- Set sensors
mSensorManager
=
(
SensorManager
)
managerContext
.
getSystemService
(
Context
.
SENSOR_SERVICE
);
if
(
mSensorManager
.
getDefaultSensor
(
Sensor
.
TYPE_LINEAR_ACCELERATION
)
!=
null
)
{
Sensor
sensor
=
mSensorManager
.
getDefaultSensor
(
Sensor
.
TYPE_LINEAR_ACCELERATION
);
mSensorManager
.
registerListener
(
this
,
sensor
,
SensorManager
.
SENSOR_DELAY_NORMAL
);
}
if
(
mSensorManager
.
getDefaultSensor
(
Sensor
.
TYPE_AMBIENT_TEMPERATURE
)
!=
null
)
{
Sensor
sensor
=
mSensorManager
.
getDefaultSensor
(
Sensor
.
TYPE_AMBIENT_TEMPERATURE
);
mSensorManager
.
registerListener
(
this
,
sensor
,
SensorManager
.
SENSOR_DELAY_NORMAL
);
}
if
(
mSensorManager
.
getDefaultSensor
(
Sensor
.
TYPE_LIGHT
)
!=
null
)
{
Sensor
sensor
=
mSensorManager
.
getDefaultSensor
(
Sensor
.
TYPE_LIGHT
);
mSensorManager
.
registerListener
(
this
,
sensor
,
SensorManager
.
SENSOR_DELAY_NORMAL
);
}
if
(
mSensorManager
.
getDefaultSensor
(
Sensor
.
TYPE_PROXIMITY
)
!=
null
)
{
Sensor
sensor
=
mSensorManager
.
getDefaultSensor
(
Sensor
.
TYPE_PROXIMITY
);
mSensorManager
.
registerListener
(
this
,
sensor
,
SensorManager
.
SENSOR_DELAY_NORMAL
);
}
//--- save device
saveConnectedFile
();
//--- Send info to UI
ServiceManager
.
startActionConnected
(
managerContext
);
Log
.
d
(
TAG
,
"Phone has been connected"
);
readBatteryLevel
(
id
);
}
}
}
}
@Override
public
void
disconnect
(
String
id
)
{
if
(
mSensorManager
!=
null
&&
myPhone
!=
null
&&
myPhone
.
isConnected
())
{
for
(
Device
device
:
getConnectedDevice
()){
if
(
device
.
getId
().
equals
(
myPhone
.
getId
())){
device
.
setConnected
(
false
);
device
.
setScanned
(
false
);
break
;
}
}
for
(
Device
device
:
getScannedDevices
()){
if
(
device
.
getId
().
equals
(
myPhone
.
getId
())){
device
.
setConnected
(
false
);
device
.
setScanned
(
false
);
break
;
}
}
mSensorManager
.
unregisterListener
(
this
);
deleteDisconnectedDevice
();
ServiceManager
.
startActionDisconnect
(
managerContext
,
myPhone
.
getName
());
Log
.
d
(
TAG
,
"Phone has been disconnected"
);
// If a saving has already been started, stop that session
if
(
ServiceManager
.
saving
())
{
ServiceManager
.
startActionStopOneSave
(
managerContext
,
myPhone
.
getId
(),
myPhone
.
getName
());
}
}
}
@Override
public
void
onActivityResult
(
String
requestCode
,
int
resultCode
)
{
}
@Override
public
void
readBatteryLevel
(
String
id
)
{
BatteryManager
bm
=
(
BatteryManager
)
managerContext
.
getSystemService
(
BATTERY_SERVICE
);
int
batLevel
=
bm
.
getIntProperty
(
BatteryManager
.
BATTERY_PROPERTY_CAPACITY
);
for
(
Device
cd
:
getConnectedDevice
())
{
if
(
cd
.
getId
().
equals
(
id
))
{
cd
.
setBatteryLevel
(
batLevel
);
break
;
}
}
ServiceManager
.
startActionBatteryRead
(
managerContext
);
Log
.
d
(
TAG
,
"battery level = "
+
batLevel
);
}
@Override
public
void
onSensorChanged
(
SensorEvent
event
)
{
switch
(
event
.
sensor
.
getType
())
{
case
Sensor
.
TYPE_LINEAR_ACCELERATION:
for
(
Device
device
:
getConnectedDevice
())
{
if
(
device
.
isConnected
())
{
device
.
getSensor
(
Phone
.
ACCELEROMETER
).
getData
(
Accelerometer
.
ACC_X
).
set
(
event
.
values
[
0
]);
device
.
getSensor
(
Phone
.
ACCELEROMETER
).
getData
(
Accelerometer
.
ACC_Y
).
set
(
event
.
values
[
1
]);
device
.
getSensor
(
Phone
.
ACCELEROMETER
).
getData
(
Accelerometer
.
ACC_Z
).
set
(
event
.
values
[
2
]);
device
.
getSensor
(
Phone
.
ACCELEROMETER
).
getTimeStamp
().
set
(
Calendar
.
getInstance
());
ServiceManager
.
save
(
device
.
getId
());
break
;
}
}
break
;
case
Sensor
.
TYPE_LIGHT:
for
(
Device
device
:
getConnectedDevice
())
{
if
(
device
.
isConnected
())
{
device
.
getSensor
(
Phone
.
LIGHT
).
getData
(
Light
.
LIGHT
).
set
(
event
.
values
[
0
]);
device
.
getSensor
(
Phone
.
LIGHT
).
getTimeStamp
().
set
(
Calendar
.
getInstance
());
ServiceManager
.
save
(
device
.
getId
());
break
;
}
}
break
;
case
Sensor
.
TYPE_PROXIMITY:
for
(
Device
device
:
getConnectedDevice
())
{
if
(
device
.
isConnected
())
{
device
.
getSensor
(
Phone
.
PROXIMITY
).
getData
(
Proximity
.
PROX
).
set
(
event
.
values
[
0
]);
device
.
getSensor
(
Phone
.
PROXIMITY
).
getTimeStamp
().
set
(
Calendar
.
getInstance
());
ServiceManager
.
save
(
device
.
getId
());
break
;
}
}
break
;
case
Sensor
.
TYPE_AMBIENT_TEMPERATURE:
for
(
Device
device
:
getConnectedDevice
())
{
if
(
device
.
isConnected
())
{
device
.
getSensor
(
Phone
.
TEMPERATURE
).
getData
(
Temperature
.
TEMP
).
set
(
event
.
values
[
0
]);
ServiceManager
.
save
(
device
.
getId
());
break
;
}
}
break
;
default
:
}
}
@Override
public
void
onAccuracyChanged
(
Sensor
sensor
,
int
accuracy
)
{
}
}
Event Timeline
Log In to Comment