Skip to content

Instantly share code, notes, and snippets.

@yooouuri
Created December 15, 2016 12:21
Show Gist options
  • Save yooouuri/727ddc741dfa7b0a82f48b1e45186dc0 to your computer and use it in GitHub Desktop.
Save yooouuri/727ddc741dfa7b0a82f48b1e45186dc0 to your computer and use it in GitHub Desktop.
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