flashlight中手电筒低于15%电量不亮

@case分析-MTK平台低于15%电量,手电筒不亮

case分析

1.电量15%以上时,手电筒打开,其功能正常打开,log分析如下:
08-30 15:12:07.721481 834 1126 I FlashHal: setOnOff(): type(1), enable(1), scenario(0).
08-30 15:12:07.721527 834 1126 I FlashHal: setFlashOn(): duty(0), timeout(0), lt duty(0), lt timeout(0).
08-30 15:12:07.721689 834 1126 I StrobeDrvFlashlight: setDuty(): duty(0).
08-30 15:12:07.721799 834 1126 I StrobeDrvFlashlight: setTimeOutTime(): (0 ms).
08-30 15:12:07.721867 834 1126 I StrobeDrvFlashlight: setOnOff(): enable(1).
此log分析,setDuty()即会直接ioctl kernel层进行如下log
<7>[ 1179.455732] (5)[1126:HwBinder:834_2]flashlight: _flashlight_ioctl: FLASH_IOC_SET_DUTY(0,0,0): 0
<6>[ 1179.455745] (5)[1126:HwBinder:834_2]flashlights_led191: led191_ioctl: FLASH_IOC_SET_DUTY(0): 0
进而使得手电筒使用正常.

2.电量10%-15%之间,手电筒打开,其功能没有反应,其代码路径/ve

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,那么你可以按照以下步骤来实现: 1. 在 AndroidManifest.xml 文件添加相机权限和闪光灯权限。 2. 在 XML 布局文件添加一个按钮,用于控制手电筒的开关。 3. 在 Activity 获取相机服务,并检查设备是否支持闪光灯功能。 4. 在按钮的点击事件开启或关闭闪光灯。 5. 在闪光灯开启时,检查电量是否低于 15%。如果是,则关闭闪光灯并提示用户电量过低。 下面是一个简单的示例代码,供你参考: ``` // 在 AndroidManifest.xml 文件添加相机权限和闪光灯权限 <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> // 在 XML 布局文件添加一个按钮 <Button android:id="@+id/flashlight_button" android:text="开启手电筒" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="toggleFlashlight" /> // 在 Activity 获取相机服务并检查设备是否支持闪光灯功能 public class MainActivity extends AppCompatActivity { private CameraManager cameraManager; private String cameraId; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE); try { for (String id : cameraManager.getCameraIdList()) { CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(id); if (characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) { cameraId = id; break; } } } catch (CameraAccessException e) { e.printStackTrace(); } } // 在按钮的点击事件开启或关闭闪光灯 public void toggleFlashlight(View view) { try { boolean isOn = cameraManager.getCameraCharacteristics(cameraId).get(CameraCharacteristics.FLASH_INFO_STATE); if (isOn) { cameraManager.setTorchMode(cameraId, false); ((Button) view).setText("开启手电筒"); } else { if (isBatteryLow()) { Toast.makeText(this, "电量过低,无法开启手电筒", Toast.LENGTH_SHORT).show(); return; } cameraManager.setTorchMode(cameraId, true); ((Button) view).setText("关闭手电筒"); } } catch (CameraAccessException e) { e.printStackTrace(); } } // 在闪光灯开启时,检查电量是否低于 15% private boolean isBatteryLow() { IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryStatus = registerReceiver(null, ifilter); int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1); float batteryPct = level / (float) scale; return batteryPct < 0.15; } } ``` 请注意,这只是一个简单的示例代码,可能需要根据你的具体需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值