Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e54113e authored by Piaf's avatar Piaf Committed by kmobs
Browse files

New flashlight test code.

set the WifiAP isDefault to false
parent df1a4596
Loading
Loading
Loading
Loading
+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;
@@ -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;
@@ -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) {

@@ -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();			
@@ -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;
@@ -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)
+1 −1
Original line number Diff line number Diff line
@@ -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;