자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey androidapi 사용법 문의
2015.06.09 00:37
본 게시판 사용시 주의 사항
* 이 게시판은 누구나 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
-----------------------------------------------------------------------------------------------
XE8 / 단말기 모델명 : G3 / O/S 버전 : 롤리팝
WebBrowser 를 사용하려는 webrtc 를 지원하지않아 adnroidapi.jni.webkit 으로 작업해보려 하고 있습니다.
DPF 도 해봤지만 잘 안되는 것 같습니다....
검색하여 나온 사용법
procedure TForm1.Button1Click(Sender: TObject);
var
myWebView: JWebView;
begin
CallInUiThread(
procedure
begin
myWebView := TJWebView.JavaClass.init(SharedActivityContext);
myWebView.loadUrl(StringToJString('https://accounts.google.com'));
myWebView.setWebViewClient(TJWebViewClient.Create());
myWebView.setMinimumHeight(400);
myWebView.setMinimumWidth(400);
MyWebView.setX(0);
MyWebView.setY(0);
MyWebView.setTop(0);
end);
를 이용해보고 있는데 동작하지 않습니다.
myWebView := TJWebView.JavaClass.init(SharedActivityContext); 에서 에러가 납니다.
CallInUiThread 를 빼고 해보면 에러가 납니다.
댓글 2
-
Humphery
2015.06.09 01:35
-
Humphery
2015.06.09 23:28
외부 컴포넌트 외의 추가 답변을 요청하셔서 참고할만한 자료 몇가지 드립니다.
myWebView := TJWebView.JavaClass.init(SharedActivityContext); 에서 에러가 납니다. CallInUiThread 를 빼고 해보면 에러가 납니다.
uses 절에 FMX.Helpers.Android 추가하세요.(XE8 기준)
TJWebView를 사용하려면 안드로이드 API 사용하는 방법을 먼저 익혀야 합니다. 다음글을 참고하세요.
http://blog.hjf.pe.kr/102
그리고 JWebView를 직접 컨트롤 하려고 하면, 외부의 검증되지 않은 샘플코드보다 파이어옹키의 소스를 직접 보시고 학습하는 것이 더 좋습니다.
저도 이참에 파이어몽키 소스를 확인해 보니 파이어몽키의 웹브라우저도 JWebView를 상속받아 리스너만 추가해 구현했네요.
[JavaSignature('com/embarcadero/firemonkey/webbrowser/WebBrowser')]
JWebBrowser = interface(JWebView)
['{21876269-EEA5-4130-BE15-F23BEB8ECA69}']
procedure SetWebViewListener(listener: JOnWebViewListener); cdecl;
end;
TJWebBrowser = class(TJavaGenericImport<JWebBrowserClass, JWebBrowser>) end
그리고, JWebView를 생성해서 화면에 표시하는 코드는 다음 파일을 참고해보세요.
FMX.WebBrowser.Android.pas(C:\Program Files (x86)\Embarcadero\Studio\16.0\source\fmx)
procedure TAndroidWebBrowserService.InitUIThread;
begin
FJWebBrowser := TJWebBrowser.JavaClass.init(SharedActivity);
FJWebBrowser.getSettings.setJavaScriptEnabled(True);
FListener := TWebBrowserListener.Create(Self);
FJWebBrowser.SetWebViewListener(FListener);
FJNativeLayout := TJNativeLayout.JavaClass.init(SharedActivity,
MainActivity.getWindow.getDecorView.getWindowToken);
FJNativeLayout.setPosition(100,100);
FJNativeLayout.setSize(300,300);
FJNativeLayout.setControl(FJWebBrowser);
FFocusChangeListener := TFocusChangeListener.Create(Self);
FJNativeLayout.setOnFocusChangeListener(FFocusChangeListener);
FJWebBrowser.getSettings.setBuiltInZoomControls(True);
FJWebBrowser.getSettings.setDisplayZoomControls(False);
end;
저도 더 분석하고 싶지만 시간이 허락하지 않아 위의 내용만 간단히 코멘트 드립니다.나머지 부분은 직접 공부하시면서 하나하나 해결하실 수 있을 것입니다.^^
Firemonkey androidapi 사용법 문의
2015.06.09 00:37
* 이 게시판은 누구나 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
-----------------------------------------------------------------------------------------------
XE8 / 단말기 모델명 : G3 / O/S 버전 : 롤리팝
WebBrowser 를 사용하려는 webrtc 를 지원하지않아 adnroidapi.jni.webkit 으로 작업해보려 하고 있습니다.
DPF 도 해봤지만 잘 안되는 것 같습니다....
검색하여 나온 사용법
procedure TForm1.Button1Click(Sender: TObject);
var
myWebView: JWebView;
begin
CallInUiThread(
procedure
begin
myWebView := TJWebView.JavaClass.init(SharedActivityContext);
myWebView.loadUrl(StringToJString('https://accounts.google.com'));
myWebView.setWebViewClient(TJWebViewClient.Create());
myWebView.setMinimumHeight(400);
myWebView.setMinimumWidth(400);
MyWebView.setX(0);
MyWebView.setY(0);
MyWebView.setTop(0);
end);
를 이용해보고 있는데 동작하지 않습니다.
myWebView := TJWebView.JavaClass.init(SharedActivityContext); 에서 에러가 납니다.
CallInUiThread 를 빼고 해보면 에러가 납니다.
댓글 2
-
Humphery
2015.06.09 01:35
-
Humphery
2015.06.09 23:28
외부 컴포넌트 외의 추가 답변을 요청하셔서 참고할만한 자료 몇가지 드립니다.
myWebView := TJWebView.JavaClass.init(SharedActivityContext); 에서 에러가 납니다. CallInUiThread 를 빼고 해보면 에러가 납니다.
uses 절에 FMX.Helpers.Android 추가하세요.(XE8 기준)
TJWebView를 사용하려면 안드로이드 API 사용하는 방법을 먼저 익혀야 합니다. 다음글을 참고하세요.
http://blog.hjf.pe.kr/102
그리고 JWebView를 직접 컨트롤 하려고 하면, 외부의 검증되지 않은 샘플코드보다 파이어옹키의 소스를 직접 보시고 학습하는 것이 더 좋습니다.
저도 이참에 파이어몽키 소스를 확인해 보니 파이어몽키의 웹브라우저도 JWebView를 상속받아 리스너만 추가해 구현했네요.
[JavaSignature('com/embarcadero/firemonkey/webbrowser/WebBrowser')]
JWebBrowser = interface(JWebView)
['{21876269-EEA5-4130-BE15-F23BEB8ECA69}']
procedure SetWebViewListener(listener: JOnWebViewListener); cdecl;
end;
TJWebBrowser = class(TJavaGenericImport<JWebBrowserClass, JWebBrowser>) end
그리고, JWebView를 생성해서 화면에 표시하는 코드는 다음 파일을 참고해보세요.
FMX.WebBrowser.Android.pas(C:\Program Files (x86)\Embarcadero\Studio\16.0\source\fmx)
procedure TAndroidWebBrowserService.InitUIThread;
begin
FJWebBrowser := TJWebBrowser.JavaClass.init(SharedActivity);
FJWebBrowser.getSettings.setJavaScriptEnabled(True);
FListener := TWebBrowserListener.Create(Self);
FJWebBrowser.SetWebViewListener(FListener);
FJNativeLayout := TJNativeLayout.JavaClass.init(SharedActivity,
MainActivity.getWindow.getDecorView.getWindowToken);
FJNativeLayout.setPosition(100,100);
FJNativeLayout.setSize(300,300);
FJNativeLayout.setControl(FJWebBrowser);
FFocusChangeListener := TFocusChangeListener.Create(Self);
FJNativeLayout.setOnFocusChangeListener(FFocusChangeListener);
FJWebBrowser.getSettings.setBuiltInZoomControls(True);
FJWebBrowser.getSettings.setDisplayZoomControls(False);
end;
저도 더 분석하고 싶지만 시간이 허락하지 않아 위의 내용만 간단히 코멘트 드립니다.나머지 부분은 직접 공부하시면서 하나하나 해결하실 수 있을 것입니다.^^
다음 내용을 검토해 보세요. 외부 컴포넌트가 있네요.
http://www.fmxexpress.com/build-voip-and-video-chat-apps-with-webrtc-in-delphi-xe8-firemonkey-on-android/