了解Android振动模式行为

时间:2017-01-07 08:10:26

标签: java android android-vibration vibration

我最近开始使用Android java开发,但我必须说它很吸引人。我正在编写我的第一个应用程序,主要是基于振动。根据我的科学项目合作伙伴的一些理论研究,应用程序做的是做一些温和的舒缓振动,以帮助人们放松并希望睡觉。我正在使用一个持续五分钟的振动模式。

我使用了另一个stackoverflow问题中的信息来进行振动。我的振动代码很简单。

#include <iostream>
#include <string>
#include <sstream>
#include <array>
#include <vector>
#include <assert.h>

int reverseOp(char oper, int x, int y)
{
 switch (oper)
  {
    case '+': return y - x; 
    case '-': return y + x;
    case '*': return y/x;
    case '/': return y * x;
    default: assert(false);
  }
}
std::array<char, 4> ops {'+', '-', '*', '/'};

std::vector<int> trunc(const std::vector<int>& vect, int i)
{ std::vector<int> v(vect);
  v.erase(v.begin()+i);
  return std::move(v);
}

bool findCombination(const std::vector<int>& vect, int target, std::ostringstream& path)
{
  if(vect.size() == 1)
  { if(vect[0] == target) path << vect[0];
    return vect[0] == target;
  }
  for(int i = 0; i < vect.size(); ++i)
    for(int j = 0; j < ops.size(); ++j) if(ops[j] != '*' || target % vect[i] == 0)
    { bool found = findCombination(trunc(vect, i), reverseOp(ops[j], vect[i], target), path);
      if (found)
      { path << ops[j] << vect[i];
        return true;
      }
    }
    return false;
}

int main()
{ std::vector<int> vect {4, 6, 5, 11};
  std::ostringstream path;
  bool found = findCombination(vect, 40, path);
  if(found) std::cout << "Found: " << path.str() << "\n";
  else std::cout << "Not found\n";

  system("pause"); return 0;
}

模式是我理论上的舒缓模式。它在前1-2分钟内正常工作。在那之后发生了导致一秒钟延迟的事情,然后一切都搞砸了。换句话说,模式不仅仅是一秒延迟(一些振动也会被跳过)。我确保模式运行正常。我甚至将模式分成五个较小的模式,然后开始单独测试每个部分。他们的工作完美无瑕。

有人可以向我解释为什么会这样吗? Android系统上的长模式存在缺陷或限制吗?我感谢您对此问题的任何反馈。我已经尝试查看stackoverflow问题并在Google上搜索了四个小时,但搜索结果用完了。

感谢您抽出宝贵时间阅读我的问题。

0 个答案:

没有答案