Skip to content

Commit

Permalink
added service status manager
Browse files Browse the repository at this point in the history
  • Loading branch information
tobyli committed Jun 17, 2016
1 parent 4acaf5f commit d1a0f69
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 4 deletions.
Binary file modified .gradle/2.4/taskArtifacts/cache.properties.lock
Binary file not shown.
Binary file modified .gradle/2.4/taskArtifacts/fileHashes.bin
Binary file not shown.
Binary file modified .gradle/2.4/taskArtifacts/fileSnapshots.bin
Binary file not shown.
Binary file modified .gradle/2.4/taskArtifacts/taskArtifacts.bin
Binary file not shown.
22 changes: 20 additions & 2 deletions app/src/main/java/edu/cmu/hcii/sugilite/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.preference.SwitchPreference;
import android.provider.Settings;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
Expand All @@ -27,23 +28,27 @@

import java.util.List;

import edu.cmu.hcii.sugilite.automation.ServiceStatusManager;
import edu.cmu.hcii.sugilite.dao.SugiliteScriptDao;
import edu.cmu.hcii.sugilite.model.block.SugiliteStartingBlock;

public class MainActivity extends AppCompatActivity {
private SugiliteData sugiliteData;
private SharedPreferences sharedPreferences;
private SugiliteScriptDao sugiliteScriptDao;
private ServiceStatusManager serviceStatusManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
View addButton = findViewById(R.id.addButton);
serviceStatusManager = new ServiceStatusManager(this);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
sugiliteScriptDao = new SugiliteScriptDao(this);
sugiliteData = (SugiliteData)getApplication();
//TODO: confirm overwrite when duplicated name
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
Expand All @@ -56,7 +61,20 @@ public void onClick(final View v) {
.setPositiveButton("Start Recording", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (scriptName != null && scriptName.getText().toString().length() > 0) {
if(!serviceStatusManager.isRunning()){
//prompt the user if the accessiblity service is not active
AlertDialog.Builder builder1 = new AlertDialog.Builder(v.getContext());
builder1.setTitle("Service not running")
.setMessage("The Sugilite accessiblity service is not enabled. Please enable the service in the phone settings before recording.")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
serviceStatusManager.promptEnabling();
//do nothing
}
}).show();
}
else if (scriptName != null && scriptName.getText().toString().length() > 0) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("scriptName", scriptName.getText().toString());
editor.putBoolean("recording_in_process", true);
Expand Down Expand Up @@ -90,7 +108,7 @@ private void setUpScriptList(){
scriptList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String scriptName = (String)scriptList.getItemAtPosition(position);
String scriptName = (String) scriptList.getItemAtPosition(position);
final Intent scriptDetailIntent = new Intent(activityContext, ScriptDetailActivity.class);
scriptDetailIntent.putExtra("scriptName", scriptName);
startActivity(scriptDetailIntent);
Expand Down
21 changes: 19 additions & 2 deletions app/src/main/java/edu/cmu/hcii/sugilite/SettingsActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.SwitchPreference;
import android.provider.Settings;
import android.support.v7.app.ActionBar;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
Expand All @@ -33,6 +34,7 @@

import java.util.List;

import edu.cmu.hcii.sugilite.automation.ServiceStatusManager;
import edu.cmu.hcii.sugilite.model.block.SugiliteBlock;
import edu.cmu.hcii.sugilite.model.block.SugiliteStartingBlock;

Expand All @@ -49,13 +51,14 @@
*/
public class SettingsActivity extends AppCompatPreferenceActivity {
private static SharedPreferences prefs;
private static ServiceStatusManager serviceStatusManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupActionBar();
prefs = PreferenceManager.getDefaultSharedPreferences(this);

serviceStatusManager = new ServiceStatusManager(this);
}

/**
Expand Down Expand Up @@ -124,7 +127,21 @@ public boolean onPreferenceChange(final Preference preference, Object newValue)
.setPositiveButton("Start Recording", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(scriptNamePreference != null && scriptName != null && scriptName.getText().toString().length() > 0) {
if(!serviceStatusManager.isRunning()){
((SwitchPreference) preference).setChecked(false);
//prompt the user if the accessiblity service is not active
AlertDialog.Builder builder1 = new AlertDialog.Builder(preference.getContext());
builder1.setTitle("Service not running")
.setMessage("The Sugilite accessiblity service is not enabled. Please enable the service in the phone settings before recording.")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
serviceStatusManager.promptEnabling();
//do nothing
}
}).show();
}
else if(scriptNamePreference != null && scriptName != null && scriptName.getText().toString().length() > 0) {
scriptNamePreference.setText(scriptName.getText().toString());
Toast.makeText(preference.getContext(), "Changed script name to " + sharedPreferences.getString("scriptName", "NULL"), Toast.LENGTH_SHORT).show();
scriptNamePreference.setSummary(scriptName.getText().toString());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package edu.cmu.hcii.sugilite.automation;

import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings;

import edu.cmu.hcii.sugilite.SugiliteAccessibilityService;

/**
* @author toby
* @date 6/17/16
* @time 5:03 PM
*/
public class ServiceStatusManager {
private Context context;
public ServiceStatusManager(Context context){
this.context = context;
}

/**
*
* @return true if SugiliteAccessibilityService is active, false otherwise
*/
public boolean isRunning() {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (SugiliteAccessibilityService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}

/**
* bring the user to the accessibility settings if SugiliteAccessibilityService is not active
*/
public void promptEnabling(){
if(!isRunning()){
Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
context.startActivity(intent);
}
}

}

0 comments on commit d1a0f69

Please sign in to comment.