dart 如何检测仿真器或真实的设备的抖动?(Bluestacks、NoxPlayer或LDPlayer)[重复]

ioekq8ef  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(72)

此问题已在此处有答案

How do I check if a device is an emulator or a physical device?(3个答案)
6天前关闭
此帖子6天前编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
我想检测模拟器和真实的设备之间的差异。我使用device_info_plus包来确定设备是模拟器还是真实的设备。它运行良好,但当我尝试运行我的应用程序并在Bluestacks,NoxPlayer或LDPlayer中测试时,它不工作。当我在那些模拟器中运行它时,结果是它将设备检测为真实的设备。我该如何解决这个问题?
我正在尝试在Bluestacks、NoxPlayer和LDPlayer等模拟器上运行我的应用程序,以测试它是在模拟器还是在真实的设备上运行。但是,模拟器被检测为真实的设备。我该怎么办?

b4lqfgs4

b4lqfgs41#

试试这个:

class HomeScreen extends StatefulWidget {
  const HomeScreen({super.key});

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: ElevatedButton(
          onPressed: () async {
            log("isPhysicalDevice: ${await checkIsPhysicalDevice()}");
          },
          child: const Text("Check Is Physical Device"),
        ),
      ),
    );
  }

  Future<bool> checkIsPhysicalDevice() async {
    final AndroidDeviceInfo androidInfo = await DeviceInfoPlugin().androidInfo;
    final bool finalCondition = androidInfo.fingerprint.startsWith("generic") ||
        androidInfo.fingerprint.startsWith("unknown") ||
        androidInfo.model.contains("google_sdk") ||
        androidInfo.model.contains("Emulator") ||
        androidInfo.model.contains("Android SDK built for x86") ||
        androidInfo.manufacturer.contains("Genymotion") ||
        androidInfo.brand.startsWith("generic") ||
        androidInfo.device.startsWith("generic") ||
        androidInfo.product == "vbox86p" ||
        androidInfo.device == "vbox86" ||
        androidInfo.hardware == "vbox86" ||
        androidInfo.product == "google_sdk";
    return Future<bool>.value(finalCondition);
  }
}

我向你保证,它比androidInfo.isPhysicalDevice更准确。

试试这个:safe_device

o2g1uqev

o2g1uqev2#

我找到了解决问题的办法:

  • 将**get_radio_version_plugin: ^1.0.0**插件添加到pubspec.yaml文件中。
  • 获取radioVersion的值并将其与以下值进行比较:
  • 1.0.0.0
  • “”(空字符串)
  • null
  • 如果radioVersion等于这些值中的任何一个,则该设备是模拟器。否则,该设备是真实的设备。
    示例代码:
if(radioVersion == '1.0.0.0' || radioVersion == ''|| radioVersion == null){
  //Emulator
} else {
  //Real Device
}

>> Image Result <<

相关问题