2016-12-05 98 views
0

我正在尝试创建应用程序以从ip摄像头传输实时视频。我用这个教程做:click 但是当我尝试启动应用程序,我有这样的例外:编译应用程序时出现错误inflanting

Android.Views.InflateException:二进制XML文件行#1:二进制XML文件行#1:错误充气类com.camera.simplemjpeg.MjpegView

我试图解决这个问题,但我真的不知道如何解决它.. 我的代码:

MainActivity.cs:

using System; 
using Android.App; 
using Android.Content; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Android.OS; 
using Com.Camera.Simplemjpeg; 
using System.Threading.Tasks; 

namespace IP_Cam_View 
{ 
    [Activity(Label = "IP_Cam_View", MainLauncher = true, Icon = "@drawable/icon")] 
    public class MainActivity : Activity 
    { 
     //MjpegView instance 
     private MjpegView mv = null; 
     //Play button 
     Button button = null; 
     //UI EditText with URL 
     EditText txturl = null; 
     //Streaming URL 
     String URL = "http://webcam.st-malo.com/axis-cgi/mjpg/video.cgi?resolution=640x480"; 
     //Layout sizes for video view 
     private int width = 640; 
     private int height = 480; 
     //Suspendign straming bool variable 
     private bool suspending = false; 
     protected override void OnCreate(Bundle bundle) 
     { 
      base.OnCreate(bundle); 
      // Set our view from the "main" layout resource 
      SetContentView(Resource.Layout.Main); 
      //initialize mjpeg view with UI Android XML 
      mv = FindViewById<MjpegView>(Resource.Id.mv); 
      //check if the instance is valid 
      if (mv != null) 
      { 
       //set the resolution of streaming 
       mv.SetResolution(width, height); 
      } 
      //assignation of UI items 
      button = FindViewById<Button>(Resource.Id.myButton); 
      txturl = FindViewById<EditText>(Resource.Id.editText1); 
      //button click event 
      button.Click += delegate 
      { 
       //take URL from txturl(EditText) field 
       URL = txturl.Text; 
       //Begin a task method to streaming 
       BeginStreaming(URL); 
      }; 
      //Begin a task method to streaming 
      BeginStreaming(URL); 
     } 
     //OnResume Method check if streaming is suspending and continue with the streaming 
     protected override void OnResume() 
     { 
      base.OnResume(); 
      if (mv != null) 
      { 
       if (suspending) 
       { 
        BeginStreaming(URL); 
        suspending = false; 
       } 
      } 
     } 
     //OnDestroy Free Memory of a streaming 
     protected override void OnDestroy() 
     { 
      base.OnDestroy(); 
      if (mv != null) 
      { 
       mv.FreeCameraMemory(); 
      } 
     } 
     //OnPause put the streaming suspending 
     protected override void OnPause() 
     { 
      base.OnPause(); 
      if (mv != null) 
      { 
       if (mv.IsStreaming) 
       { 
        mv.StopPlayback(); 
        suspending = true; 
       } 
      } 
     } 
     /// <summary> 
     /// Begins the streaming. 
     /// with a parallel task we start the streaming 
     /// </summary> 
     /// <param name="url">URL. 
     public void BeginStreaming(string url) 
     { 
      //Create a new task with a MjpegInputStream return 
      Task.Factory.StartNew(() => 
      { 
       try 
       { 
        //inicialize streaming 
        return MjpegInputStream.Read(url); 
       } 
       catch (Exception e) 
       { 
        //if something was wrong return null 
        Console.WriteLine(e.Message); 
       } 
       return null; 
      }).ContinueWith((t) => 
      { 
       //check if the result was fine 
       mv.SetSource(t.Result); 
       if (t.Result != null) 
       { 
        //set skip to result 
        t.Result.SetSkip(1); 
        Title = "Connected"; 
       } 
       else 
       { 
        Title = "Disconnected"; 
       } 
       //set display mode 
       mv.SetDisplayMode(MjpegView.SizeFullscreen); 
       //set if you need to see FPS 
       mv.ShowFps(false); 
      }); 
     } 
    } 
} 

而且Main.axml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/editText1" 
     android:text="http://webcam.st-malo.com/axis-cgi/mjpg/video.cgi?resolution=640x480" /> 
    <Button 
     android:id="@+id/myButton" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="watch" /> 

    <com.camera.simplemjpeg.MjpegView 
     android:id="@+id/mv" 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" /> 

</LinearLayout> 

感谢您的答案!

回答

0

那么,确保在该jar文件上的构建操作在“Embeddedjar”上设置。如果您还没有安装JDK 1.8,请安装它。这帮助我解决了这个错误。不幸的是,我仍然遇到播放流的问题。也许你会有更好的运气.-。

+0

那么,它似乎没有任何问题。 –