Как использовать RingtoneManager.setType () в Delphi - PullRequest
0 голосов
/ 04 июля 2018

Использование Androidapi.JNI.Media с Delphi 10.2 Tokyo.

Я пытаюсь перечислить доступные мелодии и воспроизводить мелодию, отличную от текущей по умолчанию.

Инициализация JAudioManager и JRingtoneManager выглядит нормально, потому что я могу воспроизводить рингтон по умолчанию.

Но когда я пытаюсь использовать RingtoneManager для установки Type или получить Cursor, программа завершает работу с всплывающим окном системы, которое говорит: «Приложение (имя) было прервано - перезапустите приложение».

procedure TAudioPlayBackForm.Button2Click(Sender: TObject);
var
  AudioObj: JObject;
  AudioMgr: JAudioManager;
  RingtoneMgr: JRingtoneManager; 
  aUri: Jnet_Uri;
  cur: JCursor;
  ringt: JRingtone;
begin
  AudioObj := TAndroidHelper.Activity.getSystemService(TJContext.JavaClass.AUDIO_SERVICE );
  RingtoneMgr := TJRingtoneManager.Wrap((AudioObj as ILocalObject).GetObjectID);
  Log.d('TJRingtoneManager wrap ok');

  aUri := TJRingtoneManager.JavaClass.getActualDefaultRingtoneUri(SharedActivityContext, TJRingtoneManager.JavaClass.TYPE_NOTIFICATION);
  Log.d('getActualDefaultRingtoneUri = '+ JStringToString(aUri.toString) );                                                        

  ringt := TJRingtoneManager.JavaClass.getRingtone(SharedActivityContext, aUri);
  Log.d('getRingtone uri ok = '+ JStringToString( ringt.getTitle(SharedActivityContext) ));

  ringt.play;  // OK !

  RingtoneMgr.setType( 4 );   // <-- CRASH !
  Log.d('RingtoneMgr setType ok');

  cur := RingtoneMgr.getCursor;   // <-- CRASH !
  Log.d('RingtoneMgr getCursor ok = '+ intToStr(cur.getColumnCount));
end;

Есть идеи? Я забыл что-то инициализировать?

Я использовал эту документацию в качестве справочной.

1 Ответ

0 голосов
/ 04 июля 2018

Вы неправильно создаете экземпляр RingtoneManager. Должно быть:

// Forget about obtaining AudioObj - it's not relevant
RingtoneMgr := TJRingtoneManager.JavaClass.init(TAndroidHelper.Activity);

Для этого требуется блок Androidapi.Helpers

...