Я пытаюсь создать приложение для Android, где я фильтрую одну конкретную частоту звукового сигнала и заставляю телефон вибрировать.Как вызвать вибрацию на звуковом входе?
Я беру данные от MIC мобильного и используя класс MediaRecorder, используя этот класс, я могу записывать, сохранять и воспроизводить входные данные. Теперь мне нужно, чтобы мой мобильный телефон вибрировал всякий раз, когда раздавался звуковой сигнал или какой-либо звук.
Вход задается проводным гнездом для наушников мобильного телефона, поэтому я знаю, что на вход входит только одна частота.
У меня есть кнопка, на которой начинается запись. У меня есть разрешения на вибрацию и запись в моем файле манифеста.
record.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
isRecording=true;
myAudioRecorder.prepare();
myAudioRecorder.start();
...
}
Я также попытался найти в интернете и нашел вид на подобный вопрос here, но я не могу найти правильный ответ.
Однако, я могу сделать телефон вибрировал по нажатию другой кнопки и вот snipt коды,
Vibrator vibrate;
vibrate = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
Btn1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
vibrate.vibrate(800);
}
}
Я попытался назвать вибратор внутри recorder.start(); но это заставляет телефон вибрировать, даже когда звук больше отсутствует. Я также пробовал получить помощь от this question, поэтому всякий раз, когда наступает тишина, телефон не должен вибрировать, но я сбиваюсь с толку, я как-то понимаю, что должно быть логическое значение, которое становится истинным, когда есть звук и заставляют телефон вибрировать, но я я не могу поместить эту логику в код. Пожалуйста, дайте мне знать, что я могу сделать в этом контексте и в каком направлении я должен искать?
UPDATE Я нашел this toturial для показа индикатора с амплитудой входного сигнала, он отлично работает, и я попытался сделать телефон вибрировал, когда существуют некоторое значение в буфере, сейчас она вибрирует даже тогда, когда амплитуда нуль, я думаю, это связано с тем, что каждая вибрация создает шум, который заставляет телефон вибрировать. Я не могу проверить функцию через TOAST из-за java.lang.RuntimeException: Невозможно создать обработчик внутри потока, который не вызвал Looper.prepare(). Есть ли какие-нибудь предложения?
Благодарим вас за ответ, но мне нужно, чтобы телефон вибрировал, когда есть звук, а не по щелчку, я уже могу это сделать. Пожалуйста, прочитайте вопрос еще раз. –