· 6 years ago · Nov 12, 2018, 12:40 PM
1package com.uei.halo.wizard;
2
3import android.app.Activity;
4import android.app.Fragment;
5import android.app.FragmentManager;
6import android.app.FragmentTransaction;
7import android.graphics.Color;
8import android.os.Bundle;
9import android.support.annotation.Nullable;
10import android.view.KeyEvent;
11import android.view.View;
12import android.widget.TextView;
13import android.widget.Toast;
14
15import com.uei.halo.R;
16import com.uei.halo.utils.MyKeyEventListener;
17import com.uei.halo.wizard.AvailableLightsFragment;
18import com.uei.halo.wizard.fragments.BluetoothFragment;
19import com.uei.halo.wizard.BridgeFragment;
20import com.uei.halo.wizard.fragments.CameraFragment;
21import com.uei.halo.wizard.fragments.HdmiFragment;
22import com.uei.halo.wizard.fragments.HueFragment1;
23import com.uei.halo.wizard.fragments.IpDevicesFragment;
24import com.uei.halo.wizard.fragments.WifiFragment;
25import com.uei.halo.utils.Constants;
26import com.uei.halo.fragments.HueFragment;
27import android.os.Handler;
28import android.content.Intent;
29import com.uei.halo.DroidLogicTv;
30
31///////////////// philips hue //////////////
32import java.util.List;
33import com.philips.lighting.hue.sdk.wrapper.connection.BridgeConnection;
34import com.philips.lighting.hue.sdk.wrapper.connection.BridgeConnectionCallback;
35import com.philips.lighting.hue.sdk.wrapper.connection.BridgeConnectionType;
36import com.philips.lighting.hue.sdk.wrapper.connection.BridgeStateUpdatedCallback;
37import com.philips.lighting.hue.sdk.wrapper.connection.BridgeStateUpdatedEvent;
38import com.philips.lighting.hue.sdk.wrapper.connection.ConnectionEvent;
39import com.philips.lighting.hue.sdk.wrapper.discovery.BridgeDiscovery;
40import com.philips.lighting.hue.sdk.wrapper.discovery.BridgeDiscoveryCallback;
41import com.philips.lighting.hue.sdk.wrapper.discovery.BridgeDiscoveryResult;
42import com.philips.lighting.hue.sdk.wrapper.domain.Bridge;
43import com.philips.lighting.hue.sdk.wrapper.domain.BridgeBuilder;
44import com.philips.lighting.hue.sdk.wrapper.domain.BridgeState;
45import com.philips.lighting.hue.sdk.wrapper.domain.HueError;
46import com.philips.lighting.hue.sdk.wrapper.domain.ReturnCode;
47import com.philips.lighting.hue.sdk.wrapper.domain.device.light.LightPoint;
48import com.philips.lighting.hue.sdk.wrapper.domain.device.light.LightState;
49import com.philips.lighting.hue.sdk.wrapper.knownbridges.KnownBridge;
50import com.philips.lighting.hue.sdk.wrapper.knownbridges.KnownBridges;
51import com.philips.lighting.hue.sdk.wrapper.connection.BridgeResponseCallback;
52
53import android.graphics.Bitmap;
54import com.philips.lighting.hue.sdk.wrapper.domain.clip.ClipResponse;
55import com.philips.lighting.hue.sdk.wrapper.utilities.HueColor;
56
57import com.philips.lighting.hue.sdk.wrapper.domain.BridgeState;
58import com.philips.lighting.hue.sdk.wrapper.domain.device.light.LightPoint;
59import com.philips.lighting.hue.sdk.wrapper.domain.device.light.LightState;
60import com.philips.lighting.hue.sdk.wrapper.connection.BridgeStateCacheType;
61import com.philips.lighting.hue.sdk.wrapper.connection.HeartbeatManager;
62import com.uei.halo.hue.HueBridge;
63
64import java.util.Collections;
65import java.util.Comparator;
66import android.util.Log;
67import com.uei.halo.fragments.LightFragment;
68import android.widget.EditText;
69import android.app.AlertDialog;
70import android.widget.LinearLayout;
71import android.content.DialogInterface;
72////////////////// philips hue end //////////////////////////
73
74
75public class LaunchActivty extends Activity {
76 private TextView titleText, tab1, tab2, tab3, tab4, tab5, tab6, tab7, previousTv, nextTv;
77 Fragment fragment;
78 private boolean isChildFragmentAdded;
79 private boolean isTravesedThroughPrevious;
80 private static final String TAG = "LaunchActivity";
81
82///////////// philips hue //////////////
83 private Bridge bridge;
84 private BridgeDiscovery bridgeDiscovery;
85 private List<BridgeDiscoveryResult> bridgeDiscoveryResults;
86 int hueStatus = -1;
87int callingFrom = -1;
88 enum UIState {
89 Idle,
90 BridgeDiscoveryRunning,
91 BridgeDiscoveryResults,
92 Connecting,
93 Pushlinking,
94 Connected
95 }
96
97//////////////// philips hue end///////////////
98
99 @Override
100 protected void onCreate(@Nullable Bundle savedInstanceState) {
101 super.onCreate(savedInstanceState);
102 setContentView(R.layout.main_ui_layout);
103
104 initViews();
105 fragment = new BluetoothFragment();
106 loadFragment(fragment);
107 }
108
109
110 private void initViews() {
111 titleText = (TextView) findViewById(R.id.titleText);
112 tab1 = (TextView) findViewById(R.id.tab1);
113 tab2 = (TextView) findViewById(R.id.tab2);
114 tab3 = (TextView) findViewById(R.id.tab3);
115 tab4 = (TextView) findViewById(R.id.tab4);
116 tab5 = (TextView) findViewById(R.id.tab5);
117 tab6 = (TextView) findViewById(R.id.tab6);
118 tab7 = (TextView) findViewById(R.id.tab7);
119 previousTv = (TextView) findViewById(R.id.previousTv);
120 nextTv = (TextView) findViewById(R.id.nextTv);
121
122 previousTv.setVisibility(View.GONE);
123 tab1.setTextColor(Color.parseColor("#FFFFFF"));
124 }
125
126 /*** @return true if it is bridge fragment*/
127 private boolean isBridgeFragment() {
128 return (fragment != null && fragment instanceof BridgeFragment);
129 }
130
131 /*** @return true if it is bridge fragment*/
132 private boolean isAvailableLightsFragment() {
133 return (fragment != null && fragment instanceof AvailableLightsFragment);
134 }
135
136
137
138 public void setBtnControls(boolean wifiRegistered) {
139 if (wifiRegistered) {
140 previousTv.setVisibility(View.VISIBLE);
141 nextTv.setVisibility(View.VISIBLE);
142 } else {
143 previousTv.setVisibility(View.INVISIBLE);
144 nextTv.setVisibility(View.INVISIBLE);
145 }
146 }
147
148
149
150 @Override
151 public boolean onKeyDown(int keyCode, KeyEvent event) {
152 if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
153 if (isBridgeFragment() || isAvailableLightsFragment()) {
154 if (previousTv.isFocused()) {
155 //do nothing
156 } else if (nextTv.isFocused()) {
157 removeFooterFocus();
158 focusOnPrevious();
159 setTraveresedThroughPrevious(false);
160 } else {
161 removeFooterFocus();
162 passEventsToFragment(keyCode, event, false);
163 }
164
165
166 } else {
167 previousTv.setFocusable(true);
168 previousTv.setBackgroundResource(R.drawable.focusbg);
169 }
170 } else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
171// Bridge fragment will have list items which has custom focus
172 if (isBridgeFragment() || isAvailableLightsFragment()) {
173 //removeFooterFocus();
174 passEventsToFragment(keyCode, event, false);
175 } else {
176 nextTv.setFocusable(true);
177 nextTv.setBackgroundResource(R.drawable.focusbg);
178 }
179
180 } else if (keyCode == 23 || keyCode == KeyEvent.KEYCODE_ENTER) {
181 // Toast.makeText(this, "Enter Pressed", Toast.LENGTH_LONG).show();
182 if (fragment != null) {
183// for last fragment next btn visibility
184 if (fragment instanceof BluetoothFragment) {
185 nextTv.setVisibility(View.VISIBLE);
186 previousTv.setVisibility(View.GONE);
187 } else if (isBridgeFragment() || isAvailableLightsFragment()
188 || isAvailableIpFragment()) {
189 passEventsToFragment(keyCode, event, false);
190 } else {
191 nextTv.setVisibility(View.VISIBLE);
192 previousTv.setVisibility(View.VISIBLE);
193 }
194 if (nextTv.isFocused()) {
195 if (fragment instanceof BluetoothFragment) {
196 fragment = new WifiFragment();
197 loadFragment(fragment);
198 setColorFilterTab(tab2);
199 } else if (fragment instanceof WifiFragment) {
200 fragment = new HdmiFragment();
201 loadFragment(fragment);
202 setColorFilterTab(tab3);
203 } else if (fragment instanceof HdmiFragment) {
204 removeFooterFocus();
205 fragment = new BridgeFragment();
206 loadFragment(fragment);
207 setColorFilterTab(tab4);
208 } else if (fragment instanceof AvailableIpsFragment) {
209 fragment = new CameraFragment();
210 loadFragment(fragment);
211 setColorFilterTab(tab6);
212 } else if (fragment instanceof CameraFragment) {
213 fragment = new HueFragment1();
214 loadFragment(fragment);
215 setColorFilterTab(tab7);
216
217 } else if (fragment instanceof HueFragment1) {
218 Intent i = new Intent(LaunchActivty.this, DroidLogicTv.class);
219 startActivity(i);
220 }
221
222
223 } else if (previousTv.isFocused()) {
224 if (fragment instanceof BluetoothFragment) {
225 } else if (fragment instanceof WifiFragment) {
226 fragment = new BluetoothFragment();
227 loadFragment(fragment);
228 setColorFilterTab(tab1);
229 removeFooterFocus();
230 } else if (fragment instanceof HdmiFragment) {
231 fragment = new WifiFragment();
232 loadFragment(fragment);
233 setColorFilterTab(tab2);
234 } else if (isBridgeFragment()) {
235 removeFooterFocus();
236 fragment = new HdmiFragment();
237 loadFragment(fragment);
238 setColorFilterTab(tab3);
239 } else if (fragment instanceof AvailableLightsFragment) {
240 loadBridgeFragment();
241 } else if (fragment instanceof AvailableIpsFragment) {
242 loadBridgeFragment();
243 } else if (fragment instanceof CameraFragment) {
244 fragment = new AvailableIpsFragment();
245 loadFragment(fragment);
246 setColorFilterTab(tab5);
247 } else if (fragment instanceof HueFragment1) {
248 fragment = new CameraFragment();
249 loadFragment(fragment);
250 setColorFilterTab(tab6);
251 }
252 }
253
254 }
255 } else if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
256 if (isBridgeFragment() || isAvailableLightsFragment()
257 || isAvailableIpFragment()) {
258 //if previous button is focused
259 if (previousTv.isFocused()) {
260 clearFocusOnPreviousText();
261 passEventsToFragment(keyCode, event, true);
262 } else if (nextTv.isFocused()){
263 clearFocusOnNextText();
264 }else {
265 passEventsToFragment(keyCode, event, false);
266 }
267 }
268 } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
269 if (isBridgeFragment() || isAvailableLightsFragment()
270 || isAvailableIpFragment()) {
271 passEventsToFragment(keyCode, event, false);
272 }
273
274
275 }
276
277 return super.onKeyDown(keyCode, event);
278
279 }
280
281
282 public void loadhdmiFragment() {
283 fragment = new HdmiFragment();
284 loadFragment(fragment);
285 setColorFilterTab(tab3);
286 }
287
288 public void loadIPDevicesFragment() {
289 removeFooterFocus();
290 previousTv.clearFocus();
291 previousTv.setFocusable(false);
292 previousTv.setBackground(null);
293 fragment = new AvailableIpsFragment();
294 loadFragment(fragment);
295 setColorFilterTab(tab5);
296 setTraveresedThroughPrevious(false);
297 }
298
299 public void loadBridgeFragment() {
300 clearFocusOnPreviousText();
301 removeFooterFocus();
302 fragment = new BridgeFragment();
303 loadFragment(fragment);
304 setColorFilterTab(tab4);
305 }
306
307 public void loadCameraFragment() {
308 removeFooterFocus();
309 clearFocusOnPreviousText();
310 fragment = new CameraFragment();
311 loadFragment(fragment);
312 setColorFilterTab(tab6);
313 setTraveresedThroughPrevious(false);
314 }
315
316
317 public void clearFocusOnPreviousText() {
318 previousTv.clearFocus();
319 previousTv.setFocusable(false);
320 previousTv.setBackground(null);
321 }
322
323 public void clearFocusOnNextText() {
324 nextTv.clearFocus();
325 nextTv.setFocusable(false);
326 nextTv.setBackground(null);
327 }
328
329
330
331 /**
332 * @return true if it is bridge fragment
333 */
334 private boolean isAvailableLightsFragment() {
335 return (fragment != null && fragment instanceof AvailableLightsFragment);
336 }
337
338
339
340 /**
341 * pass key events to respective screens
342 *
343 * @param keyCode
344 * @param event
345 * @param shouldFocusLastItem
346 */
347 private void passEventsToFragment(int keyCode, KeyEvent event, boolean shouldFocusLastItem) {
348
349 if (fragment != null && fragment instanceof MyKeyEventListener) {
350 if (shouldFocusLastItem) {
351 if (fragment instanceof AvailableLightsFragment) {
352 ((AvailableLightsFragment) fragment).setFocuLastItem(true);
353 ((MyKeyEventListener) fragment).onKeyDown(keyCode, event);
354 } else if (fragment instanceof BridgeFragment) {
355 ((BridgeFragment) fragment).setFocuLastItem(true);
356 ((MyKeyEventListener) fragment).onKeyDown(keyCode, event);
357 } else if (fragment instanceof AvailableIpsFragment) {
358 ((AvailableIpsFragment) fragment).setFocuLastItem(true);
359 ((MyKeyEventListener) fragment).onKeyDown(keyCode, event);
360 }
361 } else {
362 if (fragment instanceof AvailableLightsFragment) {
363 ((AvailableLightsFragment) fragment).setFocuLastItem(false);
364 ((MyKeyEventListener) fragment).onKeyDown(keyCode, event);
365 } else if (fragment instanceof BridgeFragment) {
366 ((BridgeFragment) fragment).setFocuLastItem(false);
367 ((MyKeyEventListener) fragment).onKeyDown(keyCode, event);
368 } else if (fragment instanceof AvailableIpsFragment) {
369 ((AvailableIpsFragment) fragment).setFocuLastItem(false);
370 ((MyKeyEventListener) fragment).onKeyDown(keyCode, event);
371 }
372 }
373 }
374 }
375
376 private void setColorFilterTab(TextView v) {
377 tab1.setTextColor(Color.parseColor("#404040"));
378 tab2.setTextColor(Color.parseColor("#404040"));
379 tab3.setTextColor(Color.parseColor("#404040"));
380 tab4.setTextColor(Color.parseColor("#404040"));
381 tab5.setTextColor(Color.parseColor("#404040"));
382 tab6.setTextColor(Color.parseColor("#404040"));
383 tab7.setTextColor(Color.parseColor("#404040"));
384
385
386 tab1.setBackgroundResource(0);
387tab2.setBackgroundResource(0);
388tab3.setBackgroundResource(0);
389tab4.setBackgroundResource(0);
390tab5.setBackgroundResource(0);
391tab6.setBackgroundResource(0);
392tab7.setBackgroundResource(0);
393v.setTextColor(Color.parseColor("#FFFFFF"));
394v.setBackgroundResource(R.drawable.ic_circle_icon_a);
395 if (fragment instanceof BluetoothFragment) {
396 previousTv.setVisibility(View.GONE);
397 } else {
398 previousTv.setVisibility(View.VISIBLE);
399 }
400 }
401
402 private void loadFragment(Fragment fragment) {
403 removeFragment();
404 FragmentManager fm = getFragmentManager();
405 FragmentTransaction fragmentTransaction = fm.beginTransaction();
406 fragmentTransaction.add(R.id.frameLayout, fragment);
407 fragmentTransaction.commit();
408 }
409
410 public void removeFragment() {
411 if (getFragmentManager().findFragmentById(R.id.frameLayout) != null) {
412 getFragmentManager()
413 .beginTransaction().
414 remove(getFragmentManager().findFragmentById(R.id.frameLayout)).commit();
415 }
416 }
417
418 /**
419 * move focus to previous
420 */
421 public void focusOnPrevious() {
422 Handler handler = new Handler();
423 handler.postDelayed(new Runnable() {
424 @Override
425 public void run() {
426 previousTv.requestFocus();
427 previousTv.setFocusable(true);
428 previousTv.setBackgroundResource(R.drawable.focusbg);
429 }
430 }, 30);
431 }
432
433 /**
434 * move focus to previous
435 */
436 public void focusOnNext() {
437 nextTv.requestFocus();
438 nextTv.setFocusable(true);
439 nextTv.setBackgroundResource(R.drawable.focusbg);
440 }
441
442
443 /**
444 * remove the focus on the textviews
445 */
446 public void removeFooterFocus() {
447 if (nextTv.isFocused()) {
448 nextTv.setFocusable(false);
449 nextTv.clearFocus();
450 nextTv.setBackground(null);
451 } else if (previousTv.isFocused()) {
452 previousTv.setFocusable(false);
453 previousTv.clearFocus();
454 previousTv.setBackground(null);
455 }
456
457 }
458
459
460 /**
461 * @return true id nextTv is focused
462 */
463 public boolean isNextFocused() {
464 return (nextTv.isFocused());
465 }
466
467 /**
468 * @return true id previousTv is focused
469 */
470 public boolean isPreviousFocused() {
471 return (previousTv.isFocused());
472 }
473
474
475 public boolean isFooterFocused() {
476 if (nextTv.isFocused()) {
477 return true;
478 } else if (previousTv.isFocused()) {
479 return true;
480 }
481 return false;
482 }
483
484 /**
485 * a setter to know if user navigated to NEXT BUTTON from PREVIOUS BUTTON
486 *
487 * @param isTraveresedThroughPrevious
488 */
489 public void setTraveresedThroughPrevious(boolean isTraveresedThroughPrevious) {
490 this.isTravesedThroughPrevious = isTraveresedThroughPrevious;
491 }
492
493
494 public void launchHueFragment(String s){
495 fragment = new HueFragment();
496 Bundle bundle = new Bundle();
497 bundle.putString(Constants.Keys.TITILE, s);
498 fragment.setArguments(bundle);
499 loadFragment(fragment);
500 setColorFilterTab(tab4);
501 removeFooterFocus();
502
503
504}
505
506 public void navigateToAvailableLights(String s) {
507 fragment = new AvailableLightsFragment();
508 Bundle bundle = new Bundle();
509 bundle.putString(Constants.Keys.TITILE, s);
510 fragment.setArguments(bundle);
511 loadFragment(fragment);
512 setColorFilterTab(tab4);
513 removeFooterFocus();
514
515 }
516
517////////////// philips hue //////////////////////
518 public void initBridge(){
519 String bridgeIp = getLastUsedBridgeIp();
520 Constants.initScene();
521 if (bridgeIp == null) {
522 startBridgeDiscovery();
523 } else {
524 connectToBridge(bridgeIp , -1);
525 }
526 }
527
528 private String getLastUsedBridgeIp() {
529 List<KnownBridge> bridges = KnownBridges.getAll();
530
531 if (bridges.isEmpty()) {
532 return null;
533 }
534
535 return Collections.max(bridges, new Comparator<KnownBridge>() {
536 @Override
537 public int compare(KnownBridge a, KnownBridge b) {
538 return a.getLastConnected().compareTo(b.getLastConnected());
539 }
540 }).getIpAddress();
541 }
542
543 private void startBridgeDiscovery() {
544 disconnectFromBridge();
545 bridgeDiscovery = new BridgeDiscovery();
546 // ALL Include [UPNP, IPSCAN, NUPNP] but in some nets UPNP and NUPNP is not working properly
547 bridgeDiscovery.search(BridgeDiscovery.BridgeDiscoveryOption.ALL, bridgeDiscoveryCallback);
548 updateUI(UIState.BridgeDiscoveryRunning, "Scanning the network for hue bridges...");
549 }
550
551
552 private void stopBridgeDiscovery() {
553 if (bridgeDiscovery != null) {
554 bridgeDiscovery.stop();
555 bridgeDiscovery = null;
556 }
557 }
558
559
560 private BridgeDiscoveryCallback bridgeDiscoveryCallback = new BridgeDiscoveryCallback() {
561 @Override
562 public void onFinished(final List<BridgeDiscoveryResult> results, final ReturnCode returnCode) {
563 // Set to null to prevent stopBridgeDiscovery from stopping it
564 bridgeDiscovery = null;
565
566 runOnUiThread(new Runnable() {
567 @Override
568 public void run() {
569 if (returnCode == ReturnCode.SUCCESS) {
570 bridgeDiscoveryResults = results;
571
572 updateUI(UIState.BridgeDiscoveryResults, "Found " + results.size() + " bridge(s) in the network.");
573 } else if (returnCode == ReturnCode.STOPPED) {
574 Log.i(TAG, "Bridge discovery stopped.");
575 } else {
576 updateUI(UIState.Idle, "Error doing bridge discovery: " + returnCode);
577 }
578 }
579 });
580 }
581 };
582
583 private void connectToBridge(String bridgeIp, int _callingFrom) {
584 callingFrom = _callingFrom;
585 stopBridgeDiscovery();
586 disconnectFromBridge();
587
588 bridge = new BridgeBuilder("app name", "device name")
589 .setIpAddress(bridgeIp)
590 .setConnectionType(BridgeConnectionType.LOCAL)
591 .setBridgeConnectionCallback(bridgeConnectionCallback)
592 .addBridgeStateUpdatedCallback(bridgeStateUpdatedCallback)
593 .build();
594
595 ReturnCode code = bridge.connect();
596 HueBridge.getInstance().setBridge(bridge);
597
598
599 Log.d("RETURN CODE>..........", "" + code);
600
601
602 updateUI(UIState.Connecting, "Connecting to bridge...");
603 }
604
605
606 private void disconnectFromBridge() {
607 if (bridge != null) {
608 bridge.disconnect();
609 bridge = null;
610 }
611 }
612
613 private BridgeConnectionCallback bridgeConnectionCallback = new BridgeConnectionCallback() {
614 @Override
615 public boolean equals(Object obj) {
616 return super.equals(obj);
617 }
618
619 @Override
620 public void onConnectionEvent(BridgeConnection bridgeConnection, ConnectionEvent connectionEvent) {
621 Log.i(TAG, "Connection event: " + connectionEvent);
622
623 switch (connectionEvent) {
624 case LINK_BUTTON_NOT_PRESSED:
625 updateUI(UIState.Pushlinking, "Press the link button to authenticate.");
626 break;
627
628 case COULD_NOT_CONNECT:
629 updateUI(UIState.Connecting, "Could not connect.");
630 break;
631
632 case CONNECTION_LOST:
633 updateUI(UIState.Connecting, "Connection lost. Attempting to reconnect.");
634 break;
635
636 case CONNECTION_RESTORED:
637 updateUI(UIState.Connected, "Connection restored.");
638 break;
639
640 case DISCONNECTED:
641 // User-initiated disconnection.
642 break;
643
644 default:
645 break;
646 }
647 }
648
649 @Override
650 public void onConnectionError(BridgeConnection bridgeConnection, List<HueError> list) {
651 Log.d("ERROR >>>>>>>>>>", "onConnectionError");
652 for (HueError error : list) {
653 Log.e(TAG, "Connection error: " + error.toString());
654 }
655 }
656 };
657
658
659 private BridgeStateUpdatedCallback bridgeStateUpdatedCallback = new BridgeStateUpdatedCallback() {
660 @Override
661 public void onBridgeStateUpdated(Bridge bridge, BridgeStateUpdatedEvent bridgeStateUpdatedEvent) {
662 Log.i(TAG, "Bridge state updated event: " + bridgeStateUpdatedEvent);
663
664 switch (bridgeStateUpdatedEvent) {
665 case INITIALIZED:
666 // The bridge state was fully initialized for the first time.
667 // It is now safe to perform operations on the bridge state.
668
669 final BridgeConnection bridgeConnection = bridge.getBridgeConnection(BridgeConnectionType.LOCAL);
670 if (bridgeConnection == null) return;
671 final HeartbeatManager heartbeatManager = bridgeConnection.getHeartbeatManager();
672 if (heartbeatManager == null) return;
673 heartbeatManager.stopAllHeartbeats();
674 //
675 heartbeatManager.startHeartbeat(BridgeStateCacheType.LIGHTS_AND_GROUPS, 1000);
676
677 updateUI(UIState.Connected, "Connected!");
678
679
680 break;
681
682 case LIGHTS_AND_GROUPS:
683 // At least one light was updated.
684 HueBridge.getInstance().setBridge(bridge);
685 break;
686
687 default:
688 break;
689 }
690 }
691 };
692
693
694 private Fragment getLightFrag(){
695 Fragment f = getFragmentManager().findFragmentById(R.id.frameLayout);
696 if(f != null){
697 Fragment f1 = f.getChildFragmentManager().findFragmentById(R.id.frameLayout);
698 if (f1 != null && f1 instanceof LightFragment)
699 return f1;
700 }
701 return null;
702 }
703
704 private void showDialog(){
705 AlertDialog.Builder alertDialog = new AlertDialog.Builder(LaunchActivty.this);
706 alertDialog.setTitle("Bridge discovery");
707 alertDialog.setMessage("Please help with Philips Hue Bridge IP");
708
709 final EditText input = new EditText(LaunchActivty.this);
710 LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
711 LinearLayout.LayoutParams.MATCH_PARENT,
712 LinearLayout.LayoutParams.MATCH_PARENT);
713 input.setLayoutParams(lp);
714 alertDialog.setView(input);
715 alertDialog.setIcon(R.drawable.ic_halo);
716
717 alertDialog.setPositiveButton("YES",
718 new DialogInterface.OnClickListener() {
719 public void onClick(DialogInterface dialog, int which) {
720
721 if(!input.getText().toString().equals(""))
722 connectToBridge(input.getText().toString(),-1);
723
724 }
725 });
726
727 alertDialog.setNegativeButton("NO",
728 new DialogInterface.OnClickListener() {
729 public void onClick(DialogInterface dialog, int which) {
730 dialog.cancel();
731 }
732 });
733
734 alertDialog.show();
735 }
736
737 private void updateUI(final UIState state, final String status) {
738
739 runOnUiThread(new Runnable() {
740 @Override
741 public void run() {
742
743 if (getLightFrag() != null)
744 ((LightFragment)getLightFrag()).showAlertMsg(status);
745 // launchTv.setText(status);
746 Log.i(TAG, "Status: " + status);
747 switch (state) {
748 case Idle:
749 break;
750 case BridgeDiscoveryRunning:
751 // lauchBridge();
752 break;
753 case BridgeDiscoveryResults:
754 if (bridgeDiscoveryResults.size() > 0) {
755// String bridgeIp = "192.168.1.12";
756 String bridgeIp = bridgeDiscoveryResults.get(0).getIP();
757 connectToBridge(bridgeIp, -1);
758 } else {
759 if (getLightFrag() != null)
760 ((LightFragment)getLightFrag()).showAlertMsg(status);
761 // launchTv.setText("No bridges Found");
762
763 runOnUiThread(new Runnable() {
764 @Override
765 public void run() {
766 showDialog();
767 }
768 });
769
770 // connectToBridge("192.168.1.6");
771 }
772 break;
773 case Connecting:
774
775 break;
776 case Pushlinking:
777 if (getLightFrag() != null)
778 ((LightFragment)getLightFrag()).showData(1);
779
780 break;
781 case Connected:
782 if (getLightFrag() != null)
783 ((LightFragment)getLightFrag()).showData(0);
784 break;
785 }
786
787 }
788 });
789 }
790
791
792
793///////////////// philips hue end //////////////
794}