Loading src/com/android/settings/widget/buttons/FlashlightButton.java +165 −38 Original line number Diff line number Diff line package com.android.settings.widget.buttons; import java.io.File; import java.io.FileWriter; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; Loading @@ -11,6 +14,10 @@ import com.android.settings.widget.FlashlightActivity; import com.android.settings.widget.SettingsAppWidgetProvider; import com.android.settings.widget.WidgetSettings; import android.os.Build; import android.util.Log; import android.widget.Toast; public class FlashlightButton extends WidgetButton { static FlashlightButton ownButton=null; Loading @@ -18,6 +25,30 @@ public class FlashlightButton extends WidgetButton { static Camera camera=null; static Boolean isLedSupported=null; public static final File LOCATION= new File("/sys/devices/platform/flashlight.0/leds/flashlight/brightness"); public static final int MODE_SCREEN=0; public static final int MODE_N1=1; public static final int MODE_HTC=2; public static final int MODE_LED=3; public static final String N1_VALUE="3"; public static final String HTC_VALUE="128"; public static final String OFF="0"; public static final String GOOGLE_N1="passion"; public static final String HTC_EVO="supersonic"; public static final String HTC_DESIRE="bravo"; public static final String HTC_MAGIC="sapphire"; public static final String HTC_G1="dream"; public static Boolean isFlashlightOn=null; public static Integer currentMode=null; public void updateState(Context context, SharedPreferences globalPreferences, int[] appWidgetIds) { Loading @@ -33,14 +64,30 @@ public class FlashlightButton extends WidgetButton { currentIcon=R.drawable.ic_appwidget_settings_flashlight_on; currentState=SettingsAppWidgetProvider.STATE_INTERMEDIATE; } } private int getState(Context context) { switch (getMode(context)) { case MODE_SCREEN: //return SettingsAppWidgetProvider.STATE_DISABLED; case MODE_N1: case MODE_HTC: // For now set it as disabled. it will be visiable that the flashlight // If the screen gets off. we will not get any update state. return SettingsAppWidgetProvider.STATE_DISABLED; // return (isFlashlightOn==null || !isFlashlightOn)? SettingsAppWidgetProvider.STATE_DISABLED: SettingsAppWidgetProvider.STATE_ENABLED ; case MODE_LED: return getStockStatus(context); } return SettingsAppWidgetProvider.STATE_INTERMEDIATE; } private int getState(Context context) { private int getStockStatus(Context context) { int state=SettingsAppWidgetProvider.STATE_INTERMEDIATE; if (isLedSupported!=null && isLedSupported==true) { Camera tmpCam= camera; try { Parameters parameters; if (camera!=null) { parameters = camera.getParameters(); Loading @@ -61,31 +108,104 @@ public class FlashlightButton extends WidgetButton { if (tmpCam!=null) { tmpCam.release(); tmpCam=null; } } catch (Exception e) { Log.e(SettingsAppWidgetProvider.TAG, "Something wrong getting camera state", e); currentMode=MODE_SCREEN; try { if (tmpCam !=null) { tmpCam.release(); } } catch (Exception e1) { } } else { return SettingsAppWidgetProvider.STATE_DISABLED; } return state; } public int getMode (Context context) { if (currentMode==null) { SettingsAppWidgetProvider.logD("Flashlight: Test: "+Build.DEVICE); if (HTC_DESIRE.equalsIgnoreCase(Build.DEVICE) || HTC_EVO.equalsIgnoreCase(Build.DEVICE)) { currentMode=MODE_HTC; } else if (GOOGLE_N1.equalsIgnoreCase(Build.DEVICE)) { currentMode=MODE_N1; } else if (HTC_MAGIC.equalsIgnoreCase(Build.DEVICE) || HTC_G1.equalsIgnoreCase(Build.DEVICE) || !isLedSupported()) { currentMode=MODE_SCREEN; } else { currentMode=MODE_LED; } } return currentMode; } /** * Toggles the state * * @param context */ public void toggleState(Context context) { if (isLedSupported==null) { camera = Camera.open(); if (camera.getParameters().getFlashMode() == null) { SettingsAppWidgetProvider.logD("Flashlight Led not supported"); isLedSupported=false; SettingsAppWidgetProvider.logD("Flashlight: Test: "+Build.DEVICE); if (HTC_DESIRE.equalsIgnoreCase(Build.DEVICE) || HTC_EVO.equalsIgnoreCase(Build.DEVICE)) { toogleViaFile(context, HTC_VALUE); } else if (GOOGLE_N1.equalsIgnoreCase(Build.DEVICE)) { toogleViaFile(context, N1_VALUE); } else if (HTC_MAGIC.equalsIgnoreCase(Build.DEVICE) || HTC_G1.equalsIgnoreCase(Build.DEVICE) || !isLedSupported()) { toogleViaScreen(context); } else { SettingsAppWidgetProvider.logD("Flashlight Led is supported"); isLedSupported=true; toogleViaCamera(); } } private void toogleViaFile(Context context, String value) { FileWriter fwriter=null; try { if (LOCATION.exists()) { fwriter = new FileWriter(LOCATION); if (isFlashlightOn==null || !isFlashlightOn) { fwriter.write(value); isFlashlightOn=true; } else { fwriter.write(OFF); isFlashlightOn=false; } fwriter.flush(); fwriter.close(); fwriter=null; } else { currentMode=MODE_SCREEN; SettingsAppWidgetProvider.logD("Flashlight. File not found..."); Toast t = Toast.makeText(context, "Could not find brightness file", Toast.LENGTH_SHORT); t.show(); } } catch (Exception e) { currentMode=MODE_SCREEN; Log.e(SettingsAppWidgetProvider.TAG," Flashlight: Error with file...",e); Toast t = Toast.makeText(context, "Error with file", Toast.LENGTH_SHORT); t.show(); } finally { try { if (fwriter!=null) { fwriter.close(); } } catch (Exception e2) { } } } private void toogleViaScreen(Context context) { Intent intent = new Intent(context, FlashlightActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } if (isLedSupported) { private void toogleViaCamera() { boolean cameraWasSet=true; if (camera==null) { cameraWasSet=false; Loading @@ -108,14 +228,21 @@ public class FlashlightButton extends WidgetButton { camera=null; } } } private boolean isLedSupported() { if (isLedSupported==null) { camera = Camera.open(); if (camera.getParameters().getFlashMode() == null) { SettingsAppWidgetProvider.logD("Flashlight Led not supported"); isLedSupported=false; } else { Intent intent = new Intent(context, FlashlightActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); SettingsAppWidgetProvider.logD("Flashlight Led is supported"); isLedSupported=true; } } return isLedSupported; } public static FlashlightButton getInstance() { if (ownButton==null) Loading src/com/android/settings/widget/buttons/WifiApButton.java +1 −1 Original line number Diff line number Diff line Loading @@ -161,7 +161,7 @@ public class WifiApButton extends WidgetButton{ void initButton() { //SettingsAppWidgetProvider.logD("WifiAp: Init Button"); buttonID=WidgetButton.BUTTON_WIFI_AP; isDefault=true; isDefault=false; preferenceName=WidgetSettings.TOGGLE_WIFI_AP; buttonLayout=R.id.btn_wifi_ap; Loading Loading
src/com/android/settings/widget/buttons/FlashlightButton.java +165 −38 Original line number Diff line number Diff line package com.android.settings.widget.buttons; import java.io.File; import java.io.FileWriter; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; Loading @@ -11,6 +14,10 @@ import com.android.settings.widget.FlashlightActivity; import com.android.settings.widget.SettingsAppWidgetProvider; import com.android.settings.widget.WidgetSettings; import android.os.Build; import android.util.Log; import android.widget.Toast; public class FlashlightButton extends WidgetButton { static FlashlightButton ownButton=null; Loading @@ -18,6 +25,30 @@ public class FlashlightButton extends WidgetButton { static Camera camera=null; static Boolean isLedSupported=null; public static final File LOCATION= new File("/sys/devices/platform/flashlight.0/leds/flashlight/brightness"); public static final int MODE_SCREEN=0; public static final int MODE_N1=1; public static final int MODE_HTC=2; public static final int MODE_LED=3; public static final String N1_VALUE="3"; public static final String HTC_VALUE="128"; public static final String OFF="0"; public static final String GOOGLE_N1="passion"; public static final String HTC_EVO="supersonic"; public static final String HTC_DESIRE="bravo"; public static final String HTC_MAGIC="sapphire"; public static final String HTC_G1="dream"; public static Boolean isFlashlightOn=null; public static Integer currentMode=null; public void updateState(Context context, SharedPreferences globalPreferences, int[] appWidgetIds) { Loading @@ -33,14 +64,30 @@ public class FlashlightButton extends WidgetButton { currentIcon=R.drawable.ic_appwidget_settings_flashlight_on; currentState=SettingsAppWidgetProvider.STATE_INTERMEDIATE; } } private int getState(Context context) { switch (getMode(context)) { case MODE_SCREEN: //return SettingsAppWidgetProvider.STATE_DISABLED; case MODE_N1: case MODE_HTC: // For now set it as disabled. it will be visiable that the flashlight // If the screen gets off. we will not get any update state. return SettingsAppWidgetProvider.STATE_DISABLED; // return (isFlashlightOn==null || !isFlashlightOn)? SettingsAppWidgetProvider.STATE_DISABLED: SettingsAppWidgetProvider.STATE_ENABLED ; case MODE_LED: return getStockStatus(context); } return SettingsAppWidgetProvider.STATE_INTERMEDIATE; } private int getState(Context context) { private int getStockStatus(Context context) { int state=SettingsAppWidgetProvider.STATE_INTERMEDIATE; if (isLedSupported!=null && isLedSupported==true) { Camera tmpCam= camera; try { Parameters parameters; if (camera!=null) { parameters = camera.getParameters(); Loading @@ -61,31 +108,104 @@ public class FlashlightButton extends WidgetButton { if (tmpCam!=null) { tmpCam.release(); tmpCam=null; } } catch (Exception e) { Log.e(SettingsAppWidgetProvider.TAG, "Something wrong getting camera state", e); currentMode=MODE_SCREEN; try { if (tmpCam !=null) { tmpCam.release(); } } catch (Exception e1) { } } else { return SettingsAppWidgetProvider.STATE_DISABLED; } return state; } public int getMode (Context context) { if (currentMode==null) { SettingsAppWidgetProvider.logD("Flashlight: Test: "+Build.DEVICE); if (HTC_DESIRE.equalsIgnoreCase(Build.DEVICE) || HTC_EVO.equalsIgnoreCase(Build.DEVICE)) { currentMode=MODE_HTC; } else if (GOOGLE_N1.equalsIgnoreCase(Build.DEVICE)) { currentMode=MODE_N1; } else if (HTC_MAGIC.equalsIgnoreCase(Build.DEVICE) || HTC_G1.equalsIgnoreCase(Build.DEVICE) || !isLedSupported()) { currentMode=MODE_SCREEN; } else { currentMode=MODE_LED; } } return currentMode; } /** * Toggles the state * * @param context */ public void toggleState(Context context) { if (isLedSupported==null) { camera = Camera.open(); if (camera.getParameters().getFlashMode() == null) { SettingsAppWidgetProvider.logD("Flashlight Led not supported"); isLedSupported=false; SettingsAppWidgetProvider.logD("Flashlight: Test: "+Build.DEVICE); if (HTC_DESIRE.equalsIgnoreCase(Build.DEVICE) || HTC_EVO.equalsIgnoreCase(Build.DEVICE)) { toogleViaFile(context, HTC_VALUE); } else if (GOOGLE_N1.equalsIgnoreCase(Build.DEVICE)) { toogleViaFile(context, N1_VALUE); } else if (HTC_MAGIC.equalsIgnoreCase(Build.DEVICE) || HTC_G1.equalsIgnoreCase(Build.DEVICE) || !isLedSupported()) { toogleViaScreen(context); } else { SettingsAppWidgetProvider.logD("Flashlight Led is supported"); isLedSupported=true; toogleViaCamera(); } } private void toogleViaFile(Context context, String value) { FileWriter fwriter=null; try { if (LOCATION.exists()) { fwriter = new FileWriter(LOCATION); if (isFlashlightOn==null || !isFlashlightOn) { fwriter.write(value); isFlashlightOn=true; } else { fwriter.write(OFF); isFlashlightOn=false; } fwriter.flush(); fwriter.close(); fwriter=null; } else { currentMode=MODE_SCREEN; SettingsAppWidgetProvider.logD("Flashlight. File not found..."); Toast t = Toast.makeText(context, "Could not find brightness file", Toast.LENGTH_SHORT); t.show(); } } catch (Exception e) { currentMode=MODE_SCREEN; Log.e(SettingsAppWidgetProvider.TAG," Flashlight: Error with file...",e); Toast t = Toast.makeText(context, "Error with file", Toast.LENGTH_SHORT); t.show(); } finally { try { if (fwriter!=null) { fwriter.close(); } } catch (Exception e2) { } } } private void toogleViaScreen(Context context) { Intent intent = new Intent(context, FlashlightActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } if (isLedSupported) { private void toogleViaCamera() { boolean cameraWasSet=true; if (camera==null) { cameraWasSet=false; Loading @@ -108,14 +228,21 @@ public class FlashlightButton extends WidgetButton { camera=null; } } } private boolean isLedSupported() { if (isLedSupported==null) { camera = Camera.open(); if (camera.getParameters().getFlashMode() == null) { SettingsAppWidgetProvider.logD("Flashlight Led not supported"); isLedSupported=false; } else { Intent intent = new Intent(context, FlashlightActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); SettingsAppWidgetProvider.logD("Flashlight Led is supported"); isLedSupported=true; } } return isLedSupported; } public static FlashlightButton getInstance() { if (ownButton==null) Loading
src/com/android/settings/widget/buttons/WifiApButton.java +1 −1 Original line number Diff line number Diff line Loading @@ -161,7 +161,7 @@ public class WifiApButton extends WidgetButton{ void initButton() { //SettingsAppWidgetProvider.logD("WifiAp: Init Button"); buttonID=WidgetButton.BUTTON_WIFI_AP; isDefault=true; isDefault=false; preferenceName=WidgetSettings.TOGGLE_WIFI_AP; buttonLayout=R.id.btn_wifi_ap; Loading