【问题标题】:Get stream from IP Webcam从 IP 网络摄像头获取流
【发布时间】:2014-07-01 14:41:15
【问题描述】:

我试图在浏览器模式下从 Android 上的 IP 网络摄像头应用程序获取流一段时间,但没有成功。 我尝试使用 webview 加载托管在我的笔记本电脑上的 html 页面,但无法在我的应用程序中运行,但适用于 chrome for android ...这是我的代码:

Camera.html

 <img id="browser_video" class="video-image" alt="video" src="http://192.168.1.101:8080/video">

MainActivity

    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.webkit.WebView;

    public class MainActivity extends Activity{


        WebView wv;
        String URL = "http://192.168.1.187:8080/camera.html";

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            wv = (WebView) findViewById(R.id.wvImage);  
            wv.loadUrl(URL);
         }
   }

还有 activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/wvImage"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

接下来要尝试什么?

这是它在 chrome 和我的应用程序上的外观

http://i1258.photobucket.com/albums/ii532/csanonymus/Screenshot_2014-07-01-17-57-28_zps22e1e220.png

http://i1258.photobucket.com/albums/ii532/csanonymus/Screenshot_2014-07-01-17-57-07_zpsad9244d3.png

【问题讨论】:

    标签: java android xml webview


    【解决方案1】:

    确保你有:

    WebSettings webSettings = wv.getSettings();
    webSettings.setJavaScriptEnabled(true);
    

    它只是显示一个空白屏幕吗?

    编辑:在 AndroidManifest.xml 中为活动标签添加 android:hardwareAccelerated="true"

    我自己的网络摄像机代码:

    这是网络摄像机控制器

    public class WebviewActivity extends Activity {
    
    String url = "http://192.168.1.187:8080/camera.html";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        //Remove title bar
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    
        //Remove notification bar
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    
        setContentView(R.layout.activity_mini_bot_controller);
    
        WebView webview = (WebView) findViewById(R.id.browser);
        Intent intent = getIntent();
        String myIP = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        webview.getSettings().setJavaScriptEnabled(true);
        webview.setWebViewClient(new MyWebViewClient ());
        webview.loadUrl(url);
    
    
    }
    
    
    }
    

    然后是活动:

    public class MainActivity extends ActionBarActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Intent intent = new Intent(this, MiniBotController.class);
            startActivity(intent);
        }
    
    }
    

    希望这会有所帮助。

    注意:还值得一提的是,该程序从您输入 IP 地址并点击“播放”的片段开始,它会运行 Webview。

    希望最后一次编辑:我将代码修改为拖放,您需要两个文件。一个名为 WebViewActivity,一个名为 MainActivity。主要活动启动将处理所有事情的第二个活动的意图。这是一个可行的示例,因为我有时不得不使用这个示例。

    【讨论】:

    • 是的,一个白屏..我在 camera.html 中添加了一个按钮,它只显示按钮...我按照你的回答,但还是一样
    • 同时设置你的 webviewclient:wv.setWebViewClient(new MyWebViewClient ()); 也可以看看这个帖子:stackoverflow.com/questions/17182860/…
    • 仍然是空的..真是令人沮丧!
    • 这一切我都不知道怎么用。
    • @marcelinho 我把它做成了一个拖放程序。请检查一下。我希望能回答你的问题,因为我犯了很多菜鸟错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多