Pavel M Опубликовано 28 марта, 2016 Поделиться Опубликовано 28 марта, 2016 Как проиграть стандартный звук системы "кнооцк" при нажатии на кнопку? Про вибрацию вроде уже нашел: uses FMX.Helpers.Android, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, Androidapi.JNI.App, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText; implementation {$R *.fmx} uses FMX.Helpers.Android, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, Androidapi.JNI.App, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText; procedure TForm1.Button1Click(Sender: TObject); var VibratorObj: JObject; Vibrator: JVibrator; begin VibratorObj := SharedActivity.getSystemService(TJActivity.JavaClass.VIBRATOR_SERVICE); Vibrator := TJVibrator.Wrap((VibratorObj as ILocalObject).GetObjectID); Vibrator.vibrate(StrToInt(ClearingEdit1.Text)); end; Цитата Ссылка на комментарий
1 Rusland Опубликовано 29 марта, 2016 Поделиться Опубликовано 29 марта, 2016 (изменено) uses AndroidApi.JNI.Media; procedure MakeSound(ADuration: Integer); var Volume: Integer; StreamType: Integer; ToneType: Integer; ToneGenerator: JToneGenerator; begin Volume := TJToneGenerator.JavaClass.MAX_VOLUME; // задаем громкость StreamType := TJAudioManager.JavaClass.STREAM_ALARM; ToneType := TJToneGenerator.JavaClass.TONE_DTMF_0; // тип звука ToneGenerator := TJToneGenerator.JavaClass.init(StreamType, Volume); ToneGenerator.startTone(ToneType, ADuration); end; Типы звука можно посмотреть здесь Изменено 29 марта, 2016 пользователем Rusland ENERGY, Mazzay и enatechno 3 Цитата Ссылка на комментарий
0 Pavel M Опубликовано 29 марта, 2016 Автор Поделиться Опубликовано 29 марта, 2016 (изменено) Спасибо, звук воспроизводиться. Однако при частом многократном обращении (поставил событие на клик по кнопке и покликал) появляются ошибки: java.lang.RuntimeExceprion: Init failed И я не нашел стандартного звука "чпок" , как будто все звуки только для работы с телефонией. Изменено 30 марта, 2016 пользователем pvmmpv Цитата Ссылка на комментарий
0 Rusland Опубликовано 30 марта, 2016 Поделиться Опубликовано 30 марта, 2016 Тогда попробуйте найти этот звук "чпок" в mp3 и проиграйте его через MediaPlayer Цитата Ссылка на комментарий
0 Pavel M Опубликовано 30 марта, 2016 Автор Поделиться Опубликовано 30 марта, 2016 я так и сделал, но полагаю это костыль. Неужели нет API для применения. Интересна так же причина возникающих ошибок у предложенного вами варианта после 30 кликов Цитата Ссылка на комментарий
0 Rusland Опубликовано 31 марта, 2016 Поделиться Опубликовано 31 марта, 2016 16 часов назад, pvmmpv сказал: Интересна так же причина возникающих ошибок у предложенного вами варианта после 30 кликов К сожалению, не знаю ответа Цитата Ссылка на комментарий
0 okil Опубликовано 6 марта, 2017 Поделиться Опубликовано 6 марта, 2017 Самый удобный вариант это самому сделать-создать звук из коллекции мр3 и потом взят отрывок обрезать . Цитата Ссылка на комментарий
0 x11 Опубликовано 4 января, 2018 Поделиться Опубликовано 4 января, 2018 В 29.03.2016 в 08:39, Rusland сказал: Volume := TJToneGenerator.JavaClass.MAX_VOLUME; // задаем громкость А как использовать значение по умолчанию? Цитата Ссылка на комментарий
0 Psolao Опубликовано 5 февраля, 2018 Поделиться Опубликовано 5 февраля, 2018 Не нужно каждый раз делать новый генератор. Выносим в форму ToneGenerator: JToneGenerator; procedure TForm1.FormShow(Sender: TObject); begin inherited; {$IFDEF ANDROID} ToneGenerator:=nil; {$ENDIF} end; procedure TForm1.beep; var Volume: Integer; StreamType: Integer; ToneType: Integer; begin {$IFDEF ANDROID} if not assigned(ToneGenerator) then begin Volume := TJToneGenerator.JavaClass.MAX_VOLUME; // задаем громкость StreamType := TJAudioManager.JavaClass.STREAM_NOTIFICATION; ToneType := TJToneGenerator.JavaClass.TONE_CDMA_SOFT_ERROR_LITE; // тип звука ToneGenerator := TJToneGenerator.JavaClass.init(StreamType, Volume); end; ToneGenerator.startTone(ToneType,1000); {$ENDIF} end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; {$IFDEF ANDROID} if assigned(ToneGenerator) then ToneGenerator.release; {$ENDIF} end; Цитата Ссылка на комментарий
0 Hevard Опубликовано 19 января Поделиться Опубликовано 19 января (изменено) Деплоим в assets\internal\ файл звука (мр3 или ogg), размещаем на Форме компонент MediaPlayer1 и используем: procedure TMainForm.MakeSound; begin {$IFDEF ANDROID} MediaPlayer1.FileName := TPath.Combine(TPath.GetDocumentsPath, 'Button.ogg'); MediaPlayer1.Play; {$ENDIF} end; К примеру: procedure TMainForm.Button2Click(Sender: TObject); begin //==================== ... ... MakeSound; //====================== end; Изменено 19 января пользователем Hevard Цитата Ссылка на комментарий
0 Hevard Опубликовано 19 января Поделиться Опубликовано 19 января В 29.03.2016 в 21:09, Pavel M сказал: как будто все звуки только для работы с телефонией. Всё верно. В этом примере используются тоновые звуки стандарта CDMA Цитата Ссылка на комментарий
Вопрос
Pavel M
Как проиграть стандартный звук системы "кнооцк" при нажатии на кнопку?
Про вибрацию вроде уже нашел:
uses FMX.Helpers.Android, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, Androidapi.JNI.App, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText; implementation {$R *.fmx} uses FMX.Helpers.Android, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, Androidapi.JNI.App, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText; procedure TForm1.Button1Click(Sender: TObject); var VibratorObj: JObject; Vibrator: JVibrator; begin VibratorObj := SharedActivity.getSystemService(TJActivity.JavaClass.VIBRATOR_SERVICE); Vibrator := TJVibrator.Wrap((VibratorObj as ILocalObject).GetObjectID); Vibrator.vibrate(StrToInt(ClearingEdit1.Text)); end;
Ссылка на комментарий
10 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.