我最近开始使用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上搜索了四个小时,但搜索结果用完了。
感谢您抽出宝贵时间阅读我的问题。