Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F72640507
SavingActivity.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
Tue, Jul 16, 08:21
Size
10 KB
Mime Type
text/x-java
Expires
Thu, Jul 18, 08:21 (1 d, 21 h)
Engine
blob
Format
Raw Data
Handle
19082923
Attached To
R9555 Android app for multimodal data acquisition from wearables
SavingActivity.java
View Options
package
ch.epfl.esl.elevatedmonitor
;
import
android.Manifest
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.pm.PackageManager
;
import
android.os.Bundle
;
import
android.os.Environment
;
import
android.support.annotation.NonNull
;
import
android.support.design.widget.FloatingActionButton
;
import
android.support.design.widget.NavigationView
;
import
android.support.design.widget.Snackbar
;
import
android.support.v4.app.ActivityCompat
;
import
android.support.v4.content.ContextCompat
;
import
android.support.v4.view.GravityCompat
;
import
android.support.v4.widget.DrawerLayout
;
import
android.support.v7.app.ActionBarDrawerToggle
;
import
android.support.v7.app.AppCompatActivity
;
import
android.support.v7.widget.Toolbar
;
import
android.view.LayoutInflater
;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.BaseAdapter
;
import
android.widget.CheckBox
;
import
android.widget.ListView
;
import
android.widget.TextView
;
import
java.io.File
;
import
java.io.FilenameFilter
;
import
java.util.ArrayList
;
public
class
SavingActivity
extends
AppCompatActivity
implements
ActivityCompat
.
OnRequestPermissionsResultCallback
,
NavigationView
.
OnNavigationItemSelectedListener
{
public
static
ArrayList
<
Session
>
sessionsList
=
new
ArrayList
<>();
public
static
SessionAdapter
sessionAdapter
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_save
);
Toolbar
toolbar
=
findViewById
(
R
.
id
.
toolbar
);
setSupportActionBar
(
toolbar
);
FloatingActionButton
fab
=
findViewById
(
R
.
id
.
add_session
);
fab
.
setOnClickListener
(
view
->
{
// Add a new session
if
(
ServiceManager
.
getConnectedDevices
().
size
()
>
0
)
{
initExternalWriteAuthorizations
();
}
else
{
Snackbar
.
make
(
view
,
R
.
string
.
connect_device_before
,
Snackbar
.
LENGTH_SHORT
).
show
();
}
});
DrawerLayout
drawer
=
findViewById
(
R
.
id
.
drawer_layout
);
ActionBarDrawerToggle
toggle
=
new
ActionBarDrawerToggle
(
this
,
drawer
,
toolbar
,
R
.
string
.
navigation_drawer_open
,
R
.
string
.
navigation_drawer_close
);
drawer
.
addDrawerListener
(
toggle
);
toggle
.
syncState
();
NavigationView
navigationView
=
findViewById
(
R
.
id
.
nav_view
);
navigationView
.
setNavigationItemSelectedListener
(
this
);
//--- init list of sessions
initExternalReadAuthorizations
();
sessionAdapter
=
new
SessionAdapter
();
ListView
sessionListView
=
findViewById
(
R
.
id
.
list_view_session
);
sessionListView
.
setAdapter
(
sessionAdapter
);
}
@Override
public
void
onBackPressed
()
{
DrawerLayout
drawer
=
findViewById
(
R
.
id
.
drawer_layout
);
if
(
drawer
.
isDrawerOpen
(
GravityCompat
.
START
))
{
drawer
.
closeDrawer
(
GravityCompat
.
START
);
}
else
{
super
.
onBackPressed
();
}
}
@Override
public
boolean
onCreateOptionsMenu
(
Menu
menu
)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater
().
inflate
(
R
.
menu
.
save
,
menu
);
return
true
;
}
@Override
public
boolean
onNavigationItemSelected
(
@NonNull
MenuItem
item
)
{
// Handle navigation view item clicks here.
int
id
=
item
.
getItemId
();
if
(
id
==
R
.
id
.
nav_settings
)
{
Intent
settingActivity
=
new
Intent
(
this
,
SettingsActivity
.
class
);
startActivity
(
settingActivity
);
}
else
if
(
id
==
R
.
id
.
auto_connect
)
{
Intent
mainActivity
=
new
Intent
(
this
,
MainActivity
.
class
);
startActivity
(
mainActivity
);
}
else
if
(
id
==
R
.
id
.
nav_monitoring
)
{
Intent
monitoringActivity
=
new
Intent
(
this
,
MonitoringActivity
.
class
);
startActivity
(
monitoringActivity
);
}
DrawerLayout
drawer
=
findViewById
(
R
.
id
.
drawer_layout
);
drawer
.
closeDrawer
(
GravityCompat
.
START
);
return
true
;
}
public
void
updateListSession
()
{
if
(
isExternalStorageReadable
())
{
//First remove all inactive sessions
if
(
sessionsList
.
size
()
>
0
)
{
ArrayList
<
Session
>
activeSessionsList
=
new
ArrayList
<>();
for
(
Session
session
:
sessionsList
)
{
if
(
session
.
isActive
())
{
activeSessionsList
.
add
(
session
);
}
}
sessionsList
.
clear
();
sessionsList
.
addAll
(
activeSessionsList
);
}
//Add inactive sessions from the file system.
File
path
=
Environment
.
getExternalStoragePublicDirectory
(
Environment
.
DIRECTORY_DOCUMENTS
);
if
(
path
.
isDirectory
())
{
class
SessionFilter
implements
FilenameFilter
{
@Override
public
boolean
accept
(
File
dir
,
String
name
)
{
return
name
.
indexOf
(
"Session"
)
==
0
;
}
}
File
[]
fileList
=
path
.
listFiles
(
new
SessionFilter
());
for
(
File
file
:
fileList
)
{
try
{
Session
newSession
=
new
Session
(
file
.
getName
());
boolean
flagNotContains
=
false
;
for
(
Session
session
:
sessionsList
)
{
if
(
session
.
getSessionName
().
equals
(
newSession
.
getSessionName
()))
{
flagNotContains
=
true
;
break
;
}
}
if
(
flagNotContains
)
{
sessionsList
.
add
(
newSession
);
}
}
catch
(
Session
.
SessionException
e
)
{
e
.
printStackTrace
();
}
}
}
if
(
sessionAdapter
!=
null
)
{
sessionAdapter
.
notifyDataSetChanged
();
}
}
}
//--- Request Read permission to updateListSession
private
void
initExternalReadAuthorizations
()
{
// ASK for permissions
if
(
ContextCompat
.
checkSelfPermission
(
this
,
Manifest
.
permission
.
READ_EXTERNAL_STORAGE
)
!=
PackageManager
.
PERMISSION_GRANTED
)
{
ActivityCompat
.
requestPermissions
(
this
,
new
String
[]{
Manifest
.
permission
.
READ_EXTERNAL_STORAGE
},
Constants
.
PERMISSION_READ_EXTERNAL_STORAGE
);
}
else
{
updateListSession
();
}
}
//--- Request Writing permission to add sessions
private
void
initExternalWriteAuthorizations
()
{
// ASK for permissions
if
(
ContextCompat
.
checkSelfPermission
(
this
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
!=
PackageManager
.
PERMISSION_GRANTED
)
{
ActivityCompat
.
requestPermissions
(
this
,
new
String
[]{
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
},
Constants
.
PERMISSION_WRITE_EXTERNAL_STORAGE
);
}
else
{
showAddSession
();
}
}
@Override
public
void
onRequestPermissionsResult
(
int
requestCode
,
@NonNull
String
permissions
[],
@NonNull
int
[]
grantResults
)
{
switch
(
requestCode
)
{
case
Constants
.
PERMISSION_WRITE_EXTERNAL_STORAGE:
{
// If request is cancelled, the result arrays are empty.
if
(
grantResults
.
length
>
0
&&
grantResults
[
0
]
==
PackageManager
.
PERMISSION_GRANTED
)
{
showAddSession
();
}
return
;
}
case
Constants
.
PERMISSION_READ_EXTERNAL_STORAGE:
{
// If request is cancelled, the result arrays are empty.
if
(
grantResults
.
length
>
0
&&
grantResults
[
0
]
==
PackageManager
.
PERMISSION_GRANTED
)
{
updateListSession
();
}
}
}
}
//--- Adding session
private
void
showAddSession
()
{
// Create and show the dialog.
AddSessionFragment
addSessionFragment
=
AddSessionFragment
.
newInstance
();
addSessionFragment
.
show
(
getSupportFragmentManager
(),
"addSessionDialog"
);
}
//--- Adapter
public
class
SessionAdapter
extends
BaseAdapter
{
@Override
public
int
getCount
()
{
return
sessionsList
.
size
();
}
@Override
public
Object
getItem
(
int
position
)
{
return
sessionsList
.
get
(
position
);
}
@Override
public
long
getItemId
(
int
position
)
{
return
0
;
}
@Override
public
View
getView
(
final
int
position
,
View
convertView
,
ViewGroup
parent
)
{
if
(
convertView
==
null
)
{
LayoutInflater
vi
=
(
LayoutInflater
)
SavingActivity
.
this
.
getSystemService
(
Context
.
LAYOUT_INFLATER_SERVICE
);
convertView
=
vi
.
inflate
(
R
.
layout
.
list_session
,
parent
,
false
);
}
TextView
nameText
=
convertView
.
findViewById
(
R
.
id
.
textViewSessionName
);
TextView
dateText
=
convertView
.
findViewById
(
R
.
id
.
textViewDateValue
);
final
CheckBox
activity
=
convertView
.
findViewById
(
R
.
id
.
checkBoxActivity
);
nameText
.
setText
(
sessionsList
.
get
(
position
).
getName
());
dateText
.
setText
(
sessionsList
.
get
(
position
).
getDate
());
if
(
sessionsList
.
get
(
position
).
isActive
())
{
activity
.
setChecked
(
true
);
}
else
{
activity
.
setChecked
(
false
);
activity
.
setEnabled
(
false
);
}
activity
.
setOnClickListener
(
v
->
{
if
(!
activity
.
isChecked
())
{
activity
.
setChecked
(
false
);
activity
.
setEnabled
(
false
);
sessionsList
.
get
(
position
).
stopSession
();
}
});
return
convertView
;
}
}
/* Checks if external storage is available to at least read */
private
boolean
isExternalStorageReadable
()
{
String
state
=
Environment
.
getExternalStorageState
();
return
Environment
.
MEDIA_MOUNTED
.
equals
(
state
)
||
Environment
.
MEDIA_MOUNTED_READ_ONLY
.
equals
(
state
);
}
}
Event Timeline
Log In to Comment