/
SoRusV
/
src_xendil
Обзор
Документация
Войти
/
SoRusV
/
src_xendil
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Android/ActivityBrowser.java
394 строки
15 KB
ruslan
Initial commit
29 окт 2024, 11:18
29 окт 2024, 11:18
5c4dcf5
Код
Авторство
О чём код?
package com.example.scord.scord; import android.app.Activity; import android.content.pm.ActivityInfo; import android.graphics.Rect; import android.os.Build; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.view.ViewTreeObserver; import android.webkit.JsResult; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.FrameLayout; public class ActivityBrowser extends AppCompatActivity { // MJavaInterface JJS; WebView webView=null; MWebViewClient WebViewClient0=null; // private static View systemUIView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_browser); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); AndroidBug5497Workaround.assistActivity(this); // // hide the native android navigation and status bar // systemUIView = getWindow().getDecorView(); // hideSystemUI(); // // if (android.os.Build.VERSION.SDK_INT >= 19) { // getWindow().getDecorView().setOnSystemUiVisibilityChangeListener( // new View.OnSystemUiVisibilityChangeListener() { // @Override // public void onSystemUiVisibilityChange(int visibility) { // if (visibility == 0) { // hideSystemUI(); // } // } // }); // } // //// ... here comes my whole code... String IP=getIntent().getStringExtra("IP"); String AquaName=getIntent().getStringExtra("AquaName"); String Name=getIntent().getStringExtra("Name"); String Html=getIntent().getStringExtra("Html"); Log.v("TAGW", "++ IP="+IP+" @"+Here.At()); Log.v("TAGW", "++ AquaName="+AquaName+" @"+Here.At()); Log.v("TAGW", "++ Name="+Name+" @"+Here.At()); webView = (WebView) findViewById(R.id.webView); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setBuiltInZoomControls(true); webSettings.setDisplayZoomControls(false); // webView.clearCache(true); // webSettings.setDomStorageEnabled(true); webView.setWebChromeClient(new WebChromeClient() { /// show alert @Override public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { return super.onJsAlert(view, url, message, result); } }); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled(true); } // WebView.setWebChromeClient(new WebChromeClient() { // public void onProgressChanged(WebView view, int progress) { // activity.setProgress(progress * 1000); // } // }); // JJS=new MJavaInterface(); // JJS.IP=IP; // webView.addJavascriptInterface(JJS, "JJS"); WebViewClient0=new MWebViewClient(); webView.setWebViewClient(WebViewClient0);//WebViewClient()); // webView.loadUrl("file:///android_asset/MLight.htm?&IP"+IP); WebViewClient0.LastPage="file:///android_asset/"+Html+"?&AquaName="+AquaName+"&Name="+Name+"&IP="+IP; // String Url="file:///android_asset/MAbout.htm"; // Log.v("TAGW", "++ Url="+Url+" @"+Here.At()); webView.loadUrl(WebViewClient0.LastPage); // webView.loadUrl("http://yandex.ru"); // webView.loadUrl("file:///android_asset/MLight.htm"); // webView.loadUrl("http://192.168.1.109/MLight.htm"); } // @Override // public void onResume() { // super.onResume(); // hideSystemUI(); // } // // public void hideSystemUI() { // systemUIView.setSystemUiVisibility( //// View.SYSTEM_UI_FLAG_LAYOUT_STABLE // View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // | View.SYSTEM_UI_FLAG_FULLSCREEN // | View.SYSTEM_UI_FLAG_IMMERSIVE // | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); // ; // //// View.SYSTEM_UI_FLAG_LAYOUT_STABLE //// | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION //// | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN //// | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // прячем панель навигации //// | View.SYSTEM_UI_FLAG_FULLSCREEN // прячем строку состояния //// | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY //// | View.SYSTEM_UI_FLAG_IMMERSIVE); // } @Override public void onDestroy() { super.onDestroy(); webView=null; // timer.cancel(); } // Пишем код обработки нажатия кнопки назад на устройстве, что позволит нам при нажатии // на кнопку "Назад" перейти к предыдущей странице, а не просто закрывать приложения. // Оно будет закрываться кнопкой "Назад" лишь в том случае, если мы находимся на стартовой // странице, которую указали выше: @Override public void onBackPressed() { String url=webView.getUrl(); if(url.startsWith("http://xendil.")) webView.loadUrl(WebViewClient0.LastPage); // if (webView.canGoBack()) // webView.goBack(); else if(url.startsWith("file:///")) super.onBackPressed(); else if(webView.canGoBack()) webView.goBack(); else super.onBackPressed(); } // public boolean shouldOverrideUrlLoading(WebView view, String url) // { // if(url.equals("google.com")) // { // // } // else { // view.loadUrl(url); // return true; // } // return false; // } } class MWebViewClient extends WebViewClient { public String LastPage=""; @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // if (Uri.parse(url).getHost().equals("www.google.com")) { // return true; // } if(url.startsWith("file:///")) LastPage=url; return false; } } //class MThSendJSON extends Thread { // private MCallBack CallBack; // String IP; // String sJ; /// this string send to IP // String GETPOST; /// ="GET" || = "POST" // int IndexTh; // Object Pause; //// StringBuffer buffer; // // public MThSendJSON(int IndexTh_, MCallBack CallBack_) throws IOException { // Log.v("TAGW", "new Thread @" + Here.At()); // CallBack = CallBack_; // IndexTh=IndexTh_; // Pause=new Object(); // //buffer = new StringBuffer(); // } // // private String POST(String IP, String sJ, String GETPOST){ // Log.v("TAGW", "@@@@@@@@@@@@ To:" + IP + " Send=" + sJ + " @" + Here.At()); // HttpURLConnection urlConnection = null; // BufferedReader reader = null; // String resultJson = ""; // InputStream inputStream = null; // String result = "error:("; // try { // URL url2; // if(GETPOST=="GET") // url2 = new URL("http://"+IP+"/get?Json="+sJ); // else // url2 = new URL("http://"+IP+"/set?Json="+sJ); // urlConnection = (HttpURLConnection) url2.openConnection(); // urlConnection.setRequestMethod(GETPOST); // urlConnection.connect(); // InputStream inputStream2 = urlConnection.getInputStream(); // reader = new BufferedReader(new InputStreamReader(inputStream2)); // StringBuffer buffer = new StringBuffer(); // String line; // while ((line = reader.readLine()) != null) // buffer.append(line); // result = buffer.toString(); // } catch (Exception e) { // Log.d("TAGW", e.getLocalizedMessage()); // } // Log.d("TAGW", "result="+result); // return result; // } // // @Override // public void run() { // while(!this.isInterrupted()) { // try { // // Log.v("TAGW", "@@@@@@@@@@@@ To:" + IP + " Send=" + sJ + " @" + Here.At()); // JSONArray J = new JSONArray(sJ); // for (int i = 0; i < J.length(); i++) // POST(IP, J.getString(i), GETPOST); // if (CallBack.onTaskEnd(IndexTh)) // try { // synchronized (Pause) { // Pause.wait(); // } // } catch (Exception e) { // Log.v("TAGW", "!!!!!! catch run @" + Here.At()); // } // // this.suspend(); // } catch (Exception e){ // Log.v("TAGW", "!!!! catch thread:POST @" + Here.At()); // } // Log.v("TAGW", "@@@@@@ thread end @" + Here.At()); // } // } // public interface MCallBack{ // public boolean onTaskEnd(int IndexTh); /// if(return true) need suspend this thread // } //} //class MJavaInterface { // ArrayList<MThSendJSON> LTh; // String IP=""; // Object Lock; // int ThWorkCount=0; // String sJNew=""; // JSONObject JNetUdpD; // MThSendJSON.MCallBack ThSendJSONCallBack=null; // private void Send(String S, String GETPOST){ // Log.v("TAGW", "Send @" + Here.At()); // try{ // // int i=-1; // for(Iterator<String> iter = JNetUdpD.keys(); iter.hasNext();) { // String key = iter.next(); // i++; // if(i>=LTh.size()) // LTh.add(new MThSendJSON(i, ThSendJSONCallBack)); // LTh.get(i).IP = JNetUdpD.getJSONObject(key).getString("IP"); // LTh.get(i).sJ=S; // LTh.get(i).GETPOST=GETPOST; // //LTh.get(i).notify(); // // try { // synchronized (Lock) { //// Lock.wait(); // ThWorkCount++; //// Lock.notifyAll(); // } // // } catch (Exception e){ // // } // } // for(i=0; i<LTh.size(); i++) { // if (!LTh.get(i).isAlive()) // LTh.get(i).start(); // else // synchronized (LTh.get(i).Pause) { // LTh.get(i).Pause.notifyAll(); // } // } // } catch (Exception e){ // Log.v("TAGW", "!!!!!! catch Send @" + Here.At()); // } // } // MJavaInterface(){ // LTh= new ArrayList<MThSendJSON>(); // Lock=new Object(); // ThSendJSONCallBack = new MThSendJSON.MCallBack() { // @Override // public boolean onTaskEnd(int IndexTh) { // boolean r=true; // try { // synchronized (Lock) { //// Lock.wait(); // ThWorkCount--; // if(ThWorkCount==0 && sJNew.compareTo("")!=0){ /// exist new data, send new data{ // Send(sJNew, ""); // r=false; /// not suspend thread // sJNew=""; // } //// Lock.notifyAll(); // } // } catch (Exception e){ // Log.v("TAGW", "!!!!!! catch onTaskEnd @" + Here.At()); // } // return r; // }}; // } // @android.webkit.JavascriptInterface // public String GetIP() { // return IP; // } // @android.webkit.JavascriptInterface // void SendJSON(String sJ, String sJNetUdpD, String GETPOST){ // /// Send json J to IP from JNetUdpD ///// J=[{"LPWMChanelLED":{"Data":{"0":{"GPIO_PWM":"P4","VTemp":0.8326879144385024},"1":{"GPIO_PWM":"P2","VTemp":0.6308512670942398},"2":{"GPIO_PWM":"G15","VTemp":0.5373712335381918}}}}, {...}] ///// JNetUdpD={"Data":{"0":{"IP":"192.168.1.102"},"2":{"IP":"192.168.1.106"}}} // try{ // synchronized (Lock) { // if(ThWorkCount>0) { /// now th busy // sJNew = sJ; // Lock.notifyAll(); // return; // } // } // JNetUdpD = new JSONObject(sJNetUdpD); // JNetUdpD=JNetUdpD.getJSONObject("Data"); // // Send(sJ, GETPOST); // } catch (Exception e){//(JSONException e) { // return; // } // } //} class AndroidBug5497Workaround { /// for keybord scroll at fullscreen (it's android bug) // For more information, see https://issuetracker.google.com/issues/36911528 // To use this class, simply invoke assistActivity() on an Activity that already has its content view set. public static void assistActivity (Activity activity) { new AndroidBug5497Workaround(activity); } private View mChildOfContent; private int usableHeightPrevious; private FrameLayout.LayoutParams frameLayoutParams; private AndroidBug5497Workaround(Activity activity) { FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content); mChildOfContent = content.getChildAt(0); mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { public void onGlobalLayout() { possiblyResizeChildOfContent(); } }); frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent.getLayoutParams(); } private void possiblyResizeChildOfContent() { int usableHeightNow = computeUsableHeight(); if (usableHeightNow != usableHeightPrevious) { int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight(); int heightDifference = usableHeightSansKeyboard - usableHeightNow; if (heightDifference > (usableHeightSansKeyboard/4)) { // keyboard probably just became visible frameLayoutParams.height = usableHeightSansKeyboard - heightDifference; } else { // keyboard probably just became hidden frameLayoutParams.height = usableHeightSansKeyboard; } mChildOfContent.requestLayout(); usableHeightPrevious = usableHeightNow; } } private int computeUsableHeight() { Rect r = new Rect(); mChildOfContent.getWindowVisibleDisplayFrame(r); return (r.bottom - r.top); } }