I am trying to translate an example to the bass library from windows to android.
An example is called netradio from delphi windows folder bass library.
Code: Select all
procedure DoMeta();
var
meta: MarshaledAString;
p: Integer;
begin
Form1.Text1.Text := '';
meta := BASS_ChannelGetTags(str, BASS_TAG_META);
if (meta <> nil) then
begin
p := Pos('StreamTitle=', meta);
if (p = 0) then
begin
Form1.Text1.Text := 'No Name. Название не указано.';
Exit;
end;
p := p + 13;
//SendMessage(win, WM_INFO_UPDATE, 7, DWORD(PAnsiChar(AnsiString(Copy(meta, p, Pos(';', String(meta)) - p - 1)))));
Copy(meta, p, Pos(';', meta - p - 1));
Form1.Text1.Text := meta;
end;
end;
procedure MetaSync(handle: HSYNC; channel, data: DWORD; user: Pointer); stdcall;
begin
DoMeta();
end;
procedure TForm1.Button1Click(Sender: TObject);
var
check :boolean;
Len, Progress: DWORD;
Begin
check := CheckInet;
If not check Then
Begin
ShowMessage('No internet connection.' + sLineBreak + 'Нет интернет соединения.');
FloatAnimation1.Enabled := False;
Viewport3D1.Visible := False;
exit;
End;
progress := 0;
BASS_StreamFree(str);
Text1.Text := '';
str := BASS_StreamCreateURL(PChar('http://91.199.194.34:8000'), 0, BASS_UNICODE, nil, nil);
//ShowMessage(IntToStr(BASS_ErrorGetCode));
If BASS_ErrorGetCode = 0 Then
Begin
// Progress
repeat
len := BASS_StreamGetFilePosition(str, BASS_FILEPOS_END);
if (len = DW_Error) then
break; // something's gone wrong! (eg. BASS_Free called)
progress := BASS_StreamGetFilePosition(str, BASS_FILEPOS_BUFFER) * 100 div len;
// percentage of buffer filled
//SendMessage(win, WM_INFO_UPDATE, 2, progress); // show the Progess value in the label
until
(progress > 75) or (BASS_StreamGetFilePosition(str, BASS_FILEPOS_CONNECTED) = 0); // over 75% full (or end of download)
DoMeta();
BASS_ChannelSetSync(str, BASS_SYNC_META, 0, @MetaSync, nil);
//BASS_SYNC_END BASS_SYNC_META
BASS_ChannelPlay(str, FALSE);
Viewport3D1.Visible := True;
FloatAnimation1.Enabled := True;
End;
End;
procedure TForm1.Button2Click(Sender: TObject);
begin
BASS_ChannelStop(str);
BASS_SampleFree (smp);
Text1.Text := '';
FloatAnimation1.Enabled := False;
Viewport3D1.Visible := False;
end;
If comment line BASS_ChannelSetSync(str, BASS_SYNC_META, 0, @MetaSync, nil); no message.
How can this be fixed?