Created
December 15, 2016 12:21
-
-
Save yooouuri/727ddc741dfa7b0a82f48b1e45186dc0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package edu.fontys.stayconnected.ui.activities; | |
import android.content.DialogInterface; | |
import android.content.Intent; | |
import android.provider.Settings; | |
import android.support.v4.app.NotificationManagerCompat; | |
import android.support.v4.view.ViewPager; | |
import android.support.v7.app.AlertDialog; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.util.Log; | |
import com.google.samples.apps.iosched.ui.widget.SlidingTabLayout; | |
import com.philips.lighting.hue.sdk.PHAccessPoint; | |
import com.philips.lighting.hue.sdk.PHHueSDK; | |
import com.philips.lighting.hue.sdk.PHSDKListener; | |
import com.philips.lighting.model.PHBridge; | |
import com.philips.lighting.model.PHHueParsingError; | |
import com.philips.lighting.model.PHLight; | |
import com.philips.lighting.model.PHLightState; | |
import java.util.List; | |
import java.util.Random; | |
import edu.fontys.stayconnected.R; | |
import edu.fontys.stayconnected.services.HUENotificationEvent; | |
import edu.fontys.stayconnected.services.HUENotificationEventListener; | |
import edu.fontys.stayconnected.services.NotificationListener; | |
import edu.fontys.stayconnected.ui.adapters.OptionFragmentAdapter; | |
public class MainActivity extends AppCompatActivity { | |
private static final String TAG = "MainActivity"; | |
private static final int MAX_HUE = 65535; | |
private static final String BRIDGE_IP = ""; | |
private static final String BRIDGE_DEVELOPER = "newdeveloper"; | |
private PHHueSDK phHueSDK; | |
private PHBridge bridge; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); | |
final OptionFragmentAdapter adapter = new OptionFragmentAdapter(getSupportFragmentManager()); | |
if (viewPager != null) { | |
SlidingTabLayout slidingTabLayout = (SlidingTabLayout) findViewById(R.id.sliding_tab_layout); | |
slidingTabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() { | |
@Override | |
public int getIndicatorColor(int position) { | |
return getResources().getColor(R.color.colorAccent); | |
} | |
}); | |
slidingTabLayout.setDistributeEvenly(true); | |
viewPager.setAdapter(adapter); | |
slidingTabLayout.setViewPager(viewPager); | |
} | |
if (!NotificationManagerCompat.getEnabledListenerPackages(this).contains(getPackageName())) { | |
new AlertDialog.Builder(this) | |
.setTitle(getString(R.string.dialog_notification_title)) | |
.setMessage(R.string.dialog_notification_message) | |
.setPositiveButton(R.string.dialog_notification_settings, new DialogInterface.OnClickListener() { | |
public void onClick(DialogInterface dialog, int which) { | |
startActivity(new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS)); | |
} | |
}) | |
.setNegativeButton(R.string.dialog_notification_close_app, new DialogInterface.OnClickListener() { | |
public void onClick(DialogInterface dialog, int which) { | |
finish(); | |
} | |
}) | |
.show(); | |
} | |
phHueSDK = PHHueSDK.getInstance(); | |
phHueSDK.setAppName("Stay Connected"); | |
phHueSDK.setDeviceName(android.os.Build.MODEL); | |
phHueSDK.getNotificationManager().registerSDKListener(listener); | |
startService(new Intent(this, NotificationListener.class)); | |
NotificationListener.addHUEEventListener(new HUENotificationEventListener() { | |
@Override | |
public void heuNotificationAdded(HUENotificationEvent evt) { | |
try { | |
randomLights(); | |
} catch (Exception ex) { | |
Log.e(TAG, "Error"); | |
} | |
} | |
@Override | |
public void heuNotificationRead(HUENotificationEvent evt) { | |
} | |
}); | |
} | |
private PHSDKListener listener = new PHSDKListener() { | |
@Override | |
public void onCacheUpdated(List<Integer> list, PHBridge phBridge) { | |
Log.w(TAG, "Cache updated"); | |
} | |
@Override | |
public void onBridgeConnected(PHBridge phBridge, String s) { | |
} | |
@Override | |
public void onAuthenticationRequired(PHAccessPoint phAccessPoint) { | |
} | |
@Override | |
public void onAccessPointsFound(List<PHAccessPoint> list) { | |
} | |
@Override | |
public void onError(int i, String s) { | |
} | |
@Override | |
public void onConnectionResumed(PHBridge phBridge) { | |
} | |
@Override | |
public void onConnectionLost(PHAccessPoint phAccessPoint) { | |
} | |
@Override | |
public void onParsingErrors(List<PHHueParsingError> list) { | |
} | |
}; | |
private void connectToBridge() { | |
PHAccessPoint lastAccessPoint = new PHAccessPoint(); | |
lastAccessPoint.setIpAddress(BRIDGE_IP); | |
lastAccessPoint.setUsername(BRIDGE_DEVELOPER); | |
if (!phHueSDK.isAccessPointConnected(lastAccessPoint)) { | |
phHueSDK.connect(lastAccessPoint); | |
} | |
bridge = phHueSDK.getSelectedBridge(); | |
if (bridge == null) { | |
Log.w(TAG, "No bridge found"); | |
return; | |
} | |
Log.i(TAG, "Found a bridge"); | |
randomLights(); | |
} | |
private void randomLights() { | |
List<PHLight> lights = bridge.getResourceCache().getAllLights(); | |
Log.i(TAG, String.format("Amount of lights: %d", lights.size())); | |
Random random = new Random(); | |
for (PHLight light : lights) { | |
PHLightState lightState = new PHLightState(); | |
lightState.setHue(random.nextInt(MAX_HUE)); | |
bridge.updateLightState(light, lightState); | |
Log.d(TAG, "Name: " + light.getName()); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment