1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

HTML Video Katalog (WebView)

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von sharpp, 21.02.2012.

  1. sharpp, 21.02.2012 #1
    sharpp

    sharpp Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    21.02.2012
    Hallo,
    Dies ist meine ersten Anwendung unter Android.

    Ich versuche eine an sich Simple Anwendung auf eine Galaxy Tab 10.1 umzusetzen.
    Die Anforderung an die Anwendung sind:
    Anzeigen von Kategorien (Html5 Seiten)
    Abspielen von Produktvideos (Html5 mit eingebettetem Videos)

    Mein erster versuch war recht Simpel gedacht die benötigten Dateien auf das Tablet ziehen. Das hat auch soweit geklappt nur werden die Videos nicht angezeigt, lediglich wird der Ton abgespielt. Könnte am Standard HTML Viewer liegen, da die Videos abgespielt werden wenn ich die Seite per W-LAN aus von meiner Entwicklungs-Maschine aufrufe (auf dem Tablet).
    Nur ist das Problem das das Projekt Offline auf dem Tablet verfügbar sein muss.

    Darauf hin habe ich versucht die HTML Files per WebView zuladen.
    Das funktioniert zwar nur so halb ,da sämtliche CSS Eigenschaften ignoriert werden.
    Mein onCreate schaut wie folgt aus:
    PHP:
        public void onCreate(Bundle savedInstanceState) {
            
    super.onCreate(savedInstanceState);
            
    setContentView(R.layout.main);
            
            
    mWebView = (WebViewfindViewById(R.id.webview);
            
    mWebView.getSettings().setJavaScriptEnabled(true);
            
    String data "";
            try {
                
    BufferedReader br = new BufferedReader(new InputStreamReader(getResources().openRawResource(R.raw.index)));
                
    String line;

                while ((
    line br.readLine()) != null) {
                    
    data += line;
                }
                
    br.close();
                
            } catch (
    IOException e) {
                
    e.printStackTrace();
                
    data "Failed loading web page!";
            }

            
    mWebView.loadData(data"text/html""UTF-8");
            
    mWebView.setWebViewClient(new FirstViewClient());       
        }
    Hat jemand vielleicht eine Idee wie ich es hin bekomme das die CSS Dateien mit geladen werden?
    Zumal ich nicht so genau weiss wie die CSS Datein richtig aufgerufen werden müssen wenn diese im Projekt im Ordner "assets/css" liegen und die HTML Dateien unter "res/raw".

    Hoffe es kann mir jemand weiterhelfen.
     
  2. sharpp, 24.02.2012 #2
    sharpp

    sharpp Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    21.02.2012
    Hallo, ich habe noch etwas an der APP gearbeitet nun wird soweit alles Richtig angezeigt jedoch lassen sich die Videos noch nicht richtig Abspielen. Hier erhalte ich die Meldung "Video kann nicht wiedergeben werden", leider werde ich auch aus den Fehlermeldungen im Log nicht schlau.

    • 02-24 11:12:27.080: V/webview(4682): singleCursorHandlerTouchEvent -getEditableSupport FASLE
    • 02-24 11:12:27.680: I/MediaPlayer(4682): prepareAsync called in state 4
    • 02-24 11:12:27.680: E/MediaPlayer(4682): error (1, -2147483648)
    • 02-24 11:12:27.770: E/MediaPlayer(4682): Error (1,-2147483648)
    • 02-24 11:12:29.770: V/webview(4682): singleCursorHandlerTouchEvent -getEditableSupport FASLE
    Kennt hier jemand vllt die Bedeutung der Fehlermeldungen.
    Die Videos sind mit H.264 + AAC Codiert.

    Anbei der neue Code
    Code:
    public class MyActivity extends Activity {
        /** Called when the activity is first created. */
        WebView mWebView;
        final Activity activity = this;
        
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
            //this.getWindow().requestFeature(Window.FEATURE_LEFT_ICON);
            setContentView(R.layout.main);
            
            mWebView = (WebView) findViewById(R.id.webview);
    
            mWebView.getSettings().setJavaScriptEnabled(true);
            mWebView.getSettings().setAllowFileAccess(true);
            mWebView.getSettings().setPluginsEnabled(true);
            mWebView.getSettings().setSupportZoom(false);
            mWebView.getSettings().setAppCacheEnabled(false);
            mWebView.getSettings().setAllowContentAccess(true);
            mWebView.getSettings();
            mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
    
            mWebView.setWebChromeClient(new MyWebChromeClient(activity));
            mWebView.setWebViewClient(new WebViewClient());
            
            mWebView.loadUrl("file:///android_asset/site/index.html");
        }
    
    }
    
    class MyWebChromeClient extends WebChromeClient{
        private Activity mode;
    
        public MyWebChromeClient(Activity activity){
            this.mode=activity;
        }
            
        public void onProgressChanged(WebView view, int progress){
            mode.setTitle("Loading...");
            mode.setProgress(progress * 100);
    
            if(progress == 100)
                mode.setTitle(R.string.app_name);
        }  
    }
    
    class MyWebViewClient extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url){
            view.loadUrl(url);
            return true;
        }    
    }
    
     

Diese Seite empfehlen