首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅当设备连接到usb充电器时,flutte应用才会在后台运行

仅当设备连接到usb充电器时,flutte应用才会在后台运行
EN

Stack Overflow用户
提问于 2021-04-22 18:37:51
回答 1查看 63关注 0票数 0

我尝试验证简单的任务=>持续振动时,设备是水平的(用户坐下来),目前它的工作时,屏幕关闭,只有当设备连接到笔记本电脑或U盘充电器。我尝试了workmanager和android_alarm_manager,但我也遇到了同样的问题。我做错了什么吗?或者这是不可能的?

这是一个简单的复制代码,当设备连接和未连接时,可以在后台测试计时器和振动。

代码语言:javascript
复制
import 'package:android_alarm_manager/android_alarm_manager.dart';
import 'package:flutter/material.dart';
import 'package:vibration/vibration.dart';
import 'dart:async';
main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await AndroidAlarmManager.initialize();
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  Timer _timer;
  test_vibration() {
    _timer= Timer.periodic(const Duration(seconds: 1), (timer) {
      Vibration.vibrate();
    });

  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
      AndroidAlarmManager.periodic(Duration(seconds: 1), 0, test_vibration());
  }



  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center()
      ),
    );
  }
}

下面是更完整的加速度计示例

代码语言:javascript
复制
import 'package:sensors/sensors.dart';
import 'package:android_alarm_manager/android_alarm_manager.dart';
import 'package:flutter/material.dart';
import 'package:vibration/vibration.dart';
import 'dart:async';
main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await AndroidAlarmManager.initialize();
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
 
List<double> _accelerometerValues;

List<StreamSubscription<dynamic>> _streamSubscriptions =
<StreamSubscription<dynamic>>[];


test_vibration() {

  _streamSubscriptions.add(accelerometerEvents.listen((AccelerometerEvent event) {    // Stream accelerometre
      _accelerometerValues = <double>[event.y];  read accelerometer y
    

      if (event.y>6.0||event.y<-6.0){ //device vertical

      }else{ // device horizontal

        Vibration.vibrate();

      }
  }));
}



  @override
  void initState() {
    // TODO: implement initState
    super.initState();

    _streamSubscriptions.add(accelerometerEvents.listen((AccelerometerEvent event) {
      setState(() {
        _accelerometerValues = <double>[event.y];
      });

      AndroidAlarmManager.periodic(Duration(seconds: 1), 0, test_vibration());

    }));
  }



  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center()
      ),
    );
  }
}
EN

回答 1

Stack Overflow用户

发布于 2021-04-23 16:28:08

我找到的解决方案:

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67211602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档