相同的代码在不同设备上的表现方式不同?

时间:2017-12-20 17:02:22

标签: java android vibrate

在三星设备上运行代码的原因是否与在沃达丰或其他Android设备上运行的代码不同。

我检查过:

  • 相同的APK
  • 相同版本的Android
  • 所有应用权限都相同

不同之处在于三星没有遵循我设定的振动模式,但沃达丰手机正在完美运行。

这是振动代码:

if (!this.isRunning && startId == 1) {
        Log.e("if there was not sound", " and you want to start");
        //incorporate vibrating
        Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        long[] pattern = {0, 15000, 0, 15000};
        v.vibrate(pattern, -1);

我只是想让手机振动30秒而不会有任何中断,但是三星手机会停止5秒然后恢复,这与我使用过的代码完全没有特色......有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在MainActivity中,在setcontentView();

之后的Oncreate方法中添加以下代码
  int PERMISSION_ALL = 1; 

  String[] PERMISSIONS = {Manifest.permission.VIBRATE};

        if(!hasPermissions(this, PERMISSIONS)){
            ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
        }

然后在你的课程中添加这个功能

public static boolean hasPermissions(Context context, String... permissions) { 

  if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {    

        for (String permission : permissions) {
            if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
    }
    return true;
}