content: package b4a.example;
  
  
  import anywheresoftware.b4a.B4AMenuItem;
  import android.app.Activity;
  import android.os.Bundle;
  import anywheresoftware.b4a.BA;
  import anywheresoftware.b4a.BALayout;
  import anywheresoftware.b4a.B4AActivity;
  import anywheresoftware.b4a.ObjectWrapper;
  import anywheresoftware.b4a.objects.ActivityWrapper;
  import java.lang.reflect.InvocationTargetException;
  import anywheresoftware.b4a.B4AUncaughtException;
  import anywheresoftware.b4a.debug.*;
  import java.lang.ref.WeakReference;
  
  public class main extends Activity implements B4AActivity{
  	public static main mostCurrent;
  	static boolean afterFirstLayout;
  	static boolean isFirst = true;
      private static boolean processGlobalsRun = false;
  	BALayout layout;
  	public static BA processBA;
  	BA activityBA;
      ActivityWrapper _activity;
      java.util.ArrayList<B4AMenuItem> menuItems;
  	public static final boolean fullScreen = false;
  	public static final boolean includeTitle = true;
      public static WeakReference<Activity> previousOne;
      public static boolean dontPause;
  
  	@Override
  	public void onCreate(Bundle savedInstanceState) {
  		super.onCreate(savedInstanceState);
          mostCurrent = this;
  		if (processBA == null) {
  			processBA = new anywheresoftware.b4a.ShellBA(this.getApplicationContext(), null, null, "b4a.example", "b4a.example.main");
  			processBA.loadHtSubs(this.getClass());
  	        float deviceScale = getApplicationContext().getResources().getDisplayMetrics().density;
  	        BALayout.setDeviceScale(deviceScale);
              
  		}
  		else if (previousOne != null) {
  			Activity p = previousOne.get();
  			if (p != null && p != this) {
                  BA.LogInfo("Killing previous instance (main).");
  				p.finish();
  			}
  		}
          processBA.setActivityPaused(true);
          processBA.runHook("oncreate", this, null);
  		if (!includeTitle) {
          	this.getWindow().requestFeature(android.view.Window.FEATURE_NO_TITLE);
          }
          if (fullScreen) {
          	getWindow().setFlags(android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN,   
          			android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN);
          }
  		
          processBA.sharedProcessBA.activityBA = null;
  		layout = new BALayout(this);
  		setContentView(layout);
  		afterFirstLayout = false;
          WaitForLayout wl = new WaitForLayout();
          if (anywheresoftware.b4a.objects.ServiceHelper.StarterHelper.startFromActivity(this, processBA, wl, false))
  		    BA.handler.postDelayed(wl, 5);
  
  	}
  	static class WaitForLayout implements Runnable {
  		public void run() {
  			if (afterFirstLayout)
  				return;
  			if (mostCurrent == null)
  				return;
              
  			if (mostCurrent.layout.getWidth() == 0) {
  				BA.handler.postDelayed(this, 5);
  				return;
  			}
  			mostCurrent.layout.getLayoutParams().height = mostCurrent.layout.getHeight();
  			mostCurrent.layout.getLayoutParams().width = mostCurrent.layout.getWidth();
  			afterFirstLayout = true;
  			mostCurrent.afterFirstLayout();
  		}
  	}
  	private void afterFirstLayout() {
          if (this != mostCurrent)
  			return;
  		activityBA = new BA(this, layout, processBA, "b4a.example", "b4a.example.main");
          
          processBA.sharedProcessBA.activityBA = new java.lang.ref.WeakReference<BA>(activityBA);
          anywheresoftware.b4a.objects.ViewWrapper.lastId = 0;
          _activity = new ActivityWrapper(activityBA, "activity");
          anywheresoftware.b4a.Msgbox.isDismissing = false;
          if (BA.isShellModeRuntimeCheck(processBA)) {
  			if (isFirst)
  				processBA.raiseEvent2(null, true, "SHELL", false);
  			processBA.raiseEvent2(null, true, "CREATE", true, "b4a.example.main", processBA, activityBA, _activity, anywheresoftware.b4a.keywords.Common.Density, mostCurrent);
  			_activity.reinitializeForShell(activityBA, "activity");
  		}
          initializeProcessGlobals();		
          initializeGlobals();
          
          BA.LogInfo("** Activity (main) Create, isFirst = " + isFirst + " **");
          processBA.raiseEvent2(null, true, "activity_create", false, isFirst);
  		isFirst = false;
  		if (this != mostCurrent)
  			return;
          processBA.setActivityPaused(false);
          BA.LogInfo("** Activity (main) Resume **");
          processBA.raiseEvent(null, "activity_resume");
          if (android.os.Build.VERSION.SDK_INT >= 11) {
  			try {
  				android.app.Activity.class.getMethod("invalidateOptionsMenu").invoke(this,(Object[]) null);
  			} catch (Exception e) {
  				e.printStackTrace();
  			}
  		}
  
  	}
  	public void addMenuItem(B4AMenuItem item) {
  		if (menuItems == null)
  			menuItems = new java.util.ArrayList<B4AMenuItem>();
  		menuItems.add(item);
  	}
  	@Override
  	public boolean onCreateOptionsMenu(android.view.Menu menu) {
  		super.onCreateOptionsMenu(menu);
          try {
              if (processBA.subExists("activity_actionbarhomeclick")) {
                  Class.forName("android.app.ActionBar").getMethod("setHomeButtonEnabled", boolean.class).invoke(
                      getClass().getMethod("getActionBar").invoke(this), true);
              }
          } catch (Exception e) {
              e.printStackTrace();
          }
          if (processBA.runHook("oncreateoptionsmenu", this, new Object[] {menu}))
              return true;
  		if (menuItems == null)
  			return false;
  		for (B4AMenuItem bmi : menuItems) {
  			android.view.MenuItem mi = menu.add(bmi.title);
  			if (bmi.drawable != null)
  				mi.setIcon(bmi.drawable);
              if (android.os.Build.VERSION.SDK_INT >= 11) {
  				try {
                      if (bmi.addToBar) {
  				        android.view.MenuItem.class.getMethod("setShowAsAction", int.class).invoke(mi, 1);
                      }
  				} catch (Exception e) {
  					e.printStackTrace();
  				}
  			}
  			mi.setOnMenuItemClickListener(new B4AMenuItemsClickListener(bmi.eventName.toLowerCase(BA.cul)));
  		}
          
  		return true;
  	}   
   @Override
   public boolean onOptionsItemSelected(android.view.MenuItem item) {
      if (item.getItemId() == 16908332) {
          processBA.raiseEvent(null, "activity_actionbarhomeclick");
          return true;
      }
      else
          return super.onOptionsItemSelected(item); 
  }
  @Override
   public boolean onPrepareOptionsMenu(android.view.Menu menu) {
      super.onPrepareOptionsMenu(menu);
      processBA.runHook("onprepareoptionsmenu", this, new Object[] {menu});
      return true;
      
   }
   protected void onStart() {
      super.onStart();
      processBA.runHook("onstart", this, null);
  }
   protected void onStop() {
      super.onStop();
      processBA.runHook("onstop", this, null);
  }
      public void onWindowFocusChanged(boolean hasFocus) {
         super.onWindowFocusChanged(hasFocus);
         if (processBA.subExists("activity_windowfocuschanged"))
             processBA.raiseEvent2(null, true, "activity_windowfocuschanged", false, hasFocus);
      }
  	private class B4AMenuItemsClickListener implements android.view.MenuItem.OnMenuItemClickListener {
  		private final String eventName;
  		public B4AMenuItemsClickListener(String eventName) {
  			this.eventName = eventName;
  		}
  		public boolean onMenuItemClick(android.view.MenuItem item) {
  			processBA.raiseEventFromUI(item.getTitle(), eventName + "_click");
  			return true;
  		}
  	}
      public static Class<?> getObject() {
  		return main.class;
  	}
      private Boolean onKeySubExist = null;
      private Boolean onKeyUpSubExist = null;
  	@Override
  	public boolean onKeyDown(int keyCode, android.view.KeyEvent event) {
          if (processBA.runHook("onkeydown", this, new Object[] {keyCode, event}))
              return true;
  		if (onKeySubExist == null)
  			onKeySubExist = processBA.subExists("activity_keypress");
  		if (onKeySubExist) {
  			if (keyCode == anywheresoftware.b4a.keywords.constants.KeyCodes.KEYCODE_BACK &&
  					android.os.Build.VERSION.SDK_INT >= 18) {
  				HandleKeyDelayed hk = new HandleKeyDelayed();
  				hk.kc = keyCode;
  				BA.handler.post(hk);
  				return true;
  			}
  			else {
  				boolean res = new HandleKeyDelayed().runDirectly(keyCode);
  				if (res)
  					return true;
  			}
  		}
  		return super.onKeyDown(keyCode, event);
  	}
  	private class HandleKeyDelayed implements Runnable {
  		int kc;
  		public void run() {
  			runDirectly(kc);
  		}
  		public boolean runDirectly(int keyCode) {
  			Boolean res =  (Boolean)processBA.raiseEvent2(_activity, false, "activity_keypress", false, keyCode);
  			if (res == null || res == true) {
                  return true;
              }
              else if (keyCode == anywheresoftware.b4a.keywords.constants.KeyCodes.KEYCODE_BACK) {
  				finish();
  				return true;
  			}
              return false;
  		}
  		
  	}
      @Override
  	public boolean onKeyUp(int keyCode, android.view.KeyEvent event) {
          if (processBA.runHook("onkeyup", this, new Object[] {keyCode, event}))
              return true;
  		if (onKeyUpSubExist == null)
  			onKeyUpSubExist = processBA.subExists("activity_keyup");
  		if (onKeyUpSubExist) {
  			Boolean res =  (Boolean)processBA.raiseEvent2(_activity, false, "activity_keyup", false, keyCode);
  			if (res == null || res == true)
  				return true;
  		}
  		return super.onKeyUp(keyCode, event);
  	}
  	@Override
  	public void onNewIntent(android.content.Intent intent) {
          super.onNewIntent(intent);
  		this.setIntent(intent);
          processBA.runHook("onnewintent", this, new Object[] {intent});
  	}
      @Override 
  	public void onPause() {
  		super.onPause();
          if (_activity == null)
              return;
          if (this != mostCurrent)
  			return;
  		anywheresoftware.b4a.Msgbox.dismiss(true);
          if (!dontPause)
              BA.LogInfo("** Activity (main) Pause, UserClosed = " + activityBA.activity.isFinishing() + " **");
          else
              BA.LogInfo("** Activity (main) Pause event (activity is not paused). **");
          if (mostCurrent != null)
              processBA.raiseEvent2(_activity, true, "activity_pause", false, activityBA.activity.isFinishing());		
          if (!dontPause) {
              processBA.setActivityPaused(true);
              mostCurrent = null;
          }
  
          if (!activityBA.activity.isFinishing())
  			previousOne = new WeakReference<Activity>(this);
          anywheresoftware.b4a.Msgbox.isDismissing = false;
          processBA.runHook("onpause", this, null);
  	}
  
  	@Override
  	public void onDestroy() {
          super.onDestroy();
  		previousOne = null;
          processBA.runHook("ondestroy", this, null);
  	}
      @Override 
  	public void onResume() {
  		super.onResume();
          mostCurrent = this;
          anywheresoftware.b4a.Msgbox.isDismissing = false;
          if (activityBA != null) { //will be null during activity create (which waits for AfterLayout).
          	ResumeMessage rm = new ResumeMessage(mostCurrent);
          	BA.handler.post(rm);
          }
          processBA.runHook("onresume", this, null);
  	}
      private static class ResumeMessage implements Runnable {
      	private final WeakReference<Activity> activity;
      	public ResumeMessage(Activity activity) {
      		this.activity = new WeakReference<Activity>(activity);
      	}
  		public void run() {
              main mc = mostCurrent;
  			if (mc == null || mc != activity.get())
  				return;
  			processBA.setActivityPaused(false);
              BA.LogInfo("** Activity (main) Resume **");
              if (mc != mostCurrent)
                  return;
  		    processBA.raiseEvent(mc._activity, "activity_resume", (Object[])null);
  		}
      }
  	@Override
  	protected void onActivityResult(int requestCode, int resultCode,
  	      android.content.Intent data) {
  		processBA.onActivityResult(requestCode, resultCode, data);
          processBA.runHook("onactivityresult", this, new Object[] {requestCode, resultCode});
  	}
  	private static void initializeGlobals() {
  		processBA.raiseEvent2(null, true, "globals", false, (Object[])null);
  	}
      public void onRequestPermissionsResult(int requestCode,
          String permissions[], int[] grantResults) {
          for (int i = 0;i < permissions.length;i++) {
              Object[] o = new Object[] {permissions[i], grantResults[i] == 0};
              processBA.raiseEventFromDifferentThread(null,null, 0, "activity_permissionresult", true, o);
          }
              
      }
  
  
  
  public static void initializeProcessGlobals() {
      
      if (main.processGlobalsRun == false) {
  	    main.processGlobalsRun = true;
  		try {
  		        		
          } catch (Exception e) {
  			throw new RuntimeException(e);
  		}
      }
  }
  public static boolean isAnyActivityVisible() {
      boolean vis = false;
  vis = vis | (main.mostCurrent != null);
  return vis;}
  
  private static BA killProgramHelper(BA ba) {
      if (ba == null)
          return null;
      anywheresoftware.b4a.BA.SharedProcessBA sharedProcessBA = ba.sharedProcessBA;
      if (sharedProcessBA == null || sharedProcessBA.activityBA == null)
          return null;
      return sharedProcessBA.activityBA.get();
  }
  public static void killProgram() {
       {
              Activity __a = null;
              if (main.previousOne != null) {
  				__a = main.previousOne.get();
  			}
              else {
                  BA ba = killProgramHelper(main.mostCurrent == null ? null : main.mostCurrent.processBA);
                  if (ba != null) __a = ba.activity;
              }
              if (__a != null)
  				__a.finish();}
  
  BA.applicationContext.stopService(new android.content.Intent(BA.applicationContext, starter.class));
  }
  public anywheresoftware.b4a.keywords.Common __c = null;
  public static anywheresoftware.b4a.objects.B4XViewWrapper.XUI _xui = null;
  public com.biswajit.rtsp.RTSPPlayerWrapper _player = null;
  public anywheresoftware.b4a.objects.PanelWrapper _playercont = null;
  public anywheresoftware.b4a.objects.ButtonWrapper _stopbtn = null;
  public anywheresoftware.b4a.objects.ButtonWrapper _startbtn = null;
  public b4a.example.starter _starter = null;
  public static String  _activity_create(boolean _firsttime) throws Exception{
  RDebugUtils.currentModule="main";
  if (Debug.shouldDelegate(mostCurrent.activityBA, "activity_create", false))
  	 {return ((String) Debug.delegate(mostCurrent.activityBA, "activity_create", new Object[] {_firsttime}));}
  anywheresoftware.b4a.objects.ConcreteViewWrapper _v = null;
  RDebugUtils.currentLine=131072;
   //BA.debugLineNum = 131072;BA.debugLine="Sub Activity_Create(FirstTime As Boolean)";
  RDebugUtils.currentLine=131073;
   //BA.debugLineNum = 131073;BA.debugLine="Activity.LoadLayout(\"Layout\")";
  mostCurrent._activity.LoadLayout("Layout",mostCurrent.activityBA);
  RDebugUtils.currentLine=131075;
   //BA.debugLineNum = 131075;BA.debugLine="Dim v As View = player.Initialize(\"RTSP\")";
  _v = new anywheresoftware.b4a.objects.ConcreteViewWrapper();
  _v = mostCurrent._player.Initialize(processBA,"RTSP");
  RDebugUtils.currentLine=131076;
   //BA.debugLineNum = 131076;BA.debugLine="If player.IsInitialised Then";
  if (mostCurrent._player.IsInitialised()) { 
  RDebugUtils.currentLine=131077;
   //BA.debugLineNum = 131077;BA.debugLine="PlayerCont.AddView(v,0,0,PlayerCont.Width,Player";
  mostCurrent._playercont.AddView((android.view.View)(_v.getObject()),(int) (0),(int) (0),mostCurrent._playercont.getWidth(),(int) (mostCurrent._playercont.getWidth()*(9/(double)16)));
  RDebugUtils.currentLine=131078;
   //BA.debugLineNum = 131078;BA.debugLine="player.SetMedia(\"rtsp://192.168.2.200:554/user=a";
  mostCurrent._player.SetMedia("rtsp://192.168.2.200:554/user=admin&password=admin1111&channel=1&stream=stream=1.sdp","admin","admin1111","aaa");
   };
  RDebugUtils.currentLine=131081;
   //BA.debugLineNum = 131081;BA.debugLine="End Sub";
  return "";
  }
  public static String  _activity_pause(boolean _userclosed) throws Exception{
  RDebugUtils.currentModule="main";
  RDebugUtils.currentLine=262144;
   //BA.debugLineNum = 262144;BA.debugLine="Sub Activity_Pause (UserClosed As Boolean)";
  RDebugUtils.currentLine=262145;
   //BA.debugLineNum = 262145;BA.debugLine="If player.IsInitialised And player.IsStarted Then";
  if (mostCurrent._player.IsInitialised() && mostCurrent._player.IsStarted()) { 
  mostCurrent._player.Stop();};
  RDebugUtils.currentLine=262146;
   //BA.debugLineNum = 262146;BA.debugLine="End Sub";
  return "";
  }
  public static String  _activity_resume() throws Exception{
  RDebugUtils.currentModule="main";
  if (Debug.shouldDelegate(mostCurrent.activityBA, "activity_resume", false))
  	 {return ((String) Debug.delegate(mostCurrent.activityBA, "activity_resume", null));}
  RDebugUtils.currentLine=196608;
   //BA.debugLineNum = 196608;BA.debugLine="Sub Activity_Resume";
  RDebugUtils.currentLine=196610;
   //BA.debugLineNum = 196610;BA.debugLine="End Sub";
  return "";
  }
  public static String  _rtsp_connected() throws Exception{
  RDebugUtils.currentModule="main";
  if (Debug.shouldDelegate(mostCurrent.activityBA, "rtsp_connected", false))
  	 {return ((String) Debug.delegate(mostCurrent.activityBA, "rtsp_connected", null));}
  RDebugUtils.currentLine=458752;
   //BA.debugLineNum = 458752;BA.debugLine="Sub RTSP_Connected";
  RDebugUtils.currentLine=458753;
   //BA.debugLineNum = 458753;BA.debugLine="Activity.Title = \"Connected\"";
  mostCurrent._activity.setTitle(BA.ObjectToCharSequence("Connected"));
  RDebugUtils.currentLine=458754;
   //BA.debugLineNum = 458754;BA.debugLine="End Sub";
  return "";
  }
  public static String  _rtsp_connecting() throws Exception{
  RDebugUtils.currentModule="main";
  if (Debug.shouldDelegate(mostCurrent.activityBA, "rtsp_connecting", false))
  	 {return ((String) Debug.delegate(mostCurrent.activityBA, "rtsp_connecting", null));}
  RDebugUtils.currentLine=524288;
   //BA.debugLineNum = 524288;BA.debugLine="Sub RTSP_Connecting";
  RDebugUtils.currentLine=524289;
   //BA.debugLineNum = 524289;BA.debugLine="Activity.Title = \"Connecting\"";
  mostCurrent._activity.setTitle(BA.ObjectToCharSequence("Connecting"));
  RDebugUtils.currentLine=524290;
   //BA.debugLineNum = 524290;BA.debugLine="End Sub";
  return "";
  }
  public static String  _rtsp_disconnected() throws Exception{
  RDebugUtils.currentModule="main";
  if (Debug.shouldDelegate(mostCurrent.activityBA, "rtsp_disconnected", false))
  	 {return ((String) Debug.delegate(mostCurrent.activityBA, "rtsp_disconnected", null));}
  RDebugUtils.currentLine=589824;
   //BA.debugLineNum = 589824;BA.debugLine="Sub RTSP_Disconnected";
  RDebugUtils.currentLine=589825;
   //BA.debugLineNum = 589825;BA.debugLine="Activity.Title = \"Disconnected\"";
  mostCurrent._activity.setTitle(BA.ObjectToCharSequence("Disconnected"));
  RDebugUtils.currentLine=589826;
   //BA.debugLineNum = 589826;BA.debugLine="End Sub";
  return "";
  }
  public static String  _rtsp_error(String _message) throws Exception{
  RDebugUtils.currentModule="main";
  if (Debug.shouldDelegate(mostCurrent.activityBA, "rtsp_error", false))
  	 {return ((String) Debug.delegate(mostCurrent.activityBA, "rtsp_error", new Object[] {_message}));}
  RDebugUtils.currentLine=655360;
   //BA.debugLineNum = 655360;BA.debugLine="Sub RTSP_Error(message As String)";
  RDebugUtils.currentLine=655361;
   //BA.debugLineNum = 655361;BA.debugLine="Msgbox(message, \"Error\")";
  anywheresoftware.b4a.keywords.Common.Msgbox(BA.ObjectToCharSequence(_message),BA.ObjectToCharSequence("Error"),mostCurrent.activityBA);
  RDebugUtils.currentLine=655362;
   //BA.debugLineNum = 655362;BA.debugLine="End Sub";
  return "";
  }
  public static String  _rtsp_firstframerendered() throws Exception{
  RDebugUtils.currentModule="main";
  if (Debug.shouldDelegate(mostCurrent.activityBA, "rtsp_firstframerendered", false))
  	 {return ((String) Debug.delegate(mostCurrent.activityBA, "rtsp_firstframerendered", null));}
  RDebugUtils.currentLine=720896;
   //BA.debugLineNum = 720896;BA.debugLine="Sub RTSP_FirstFrameRendered";
  RDebugUtils.currentLine=720897;
   //BA.debugLineNum = 720897;BA.debugLine="Activity.Title = \"Video Started\"";
  mostCurrent._activity.setTitle(BA.ObjectToCharSequence("Video Started"));
  RDebugUtils.currentLine=720898;
   //BA.debugLineNum = 720898;BA.debugLine="End Sub";
  return "";
  }
  public static String  _rtsp_unauthorized() throws Exception{
  RDebugUtils.currentModule="main";
  if (Debug.shouldDelegate(mostCurrent.activityBA, "rtsp_unauthorized", false))
  	 {return ((String) Debug.delegate(mostCurrent.activityBA, "rtsp_unauthorized", null));}
  RDebugUtils.currentLine=786432;
   //BA.debugLineNum = 786432;BA.debugLine="Sub RTSP_Unauthorized";
  RDebugUtils.currentLine=786433;
   //BA.debugLineNum = 786433;BA.debugLine="Activity.Title = \"Auth Failed\"";
  mostCurrent._activity.setTitle(BA.ObjectToCharSequence("Auth Failed"));
  RDebugUtils.currentLine=786434;
   //BA.debugLineNum = 786434;BA.debugLine="End Sub";
  return "";
  }
  public static String  _startbtn_click() throws Exception{
  RDebugUtils.currentModule="main";
  if (Debug.shouldDelegate(mostCurrent.activityBA, "startbtn_click", false))
  	 {return ((String) Debug.delegate(mostCurrent.activityBA, "startbtn_click", null));}
  RDebugUtils.currentLine=327680;
   //BA.debugLineNum = 327680;BA.debugLine="Private Sub startBtn_Click";
  RDebugUtils.currentLine=327681;
   //BA.debugLineNum = 327681;BA.debugLine="If player.IsInitialised Then player.Start(True,Tr";
  if (mostCurrent._player.IsInitialised()) { 
  mostCurrent._player.Start(anywheresoftware.b4a.keywords.Common.True,anywheresoftware.b4a.keywords.Common.True);};
  RDebugUtils.currentLine=327682;
   //BA.debugLineNum = 327682;BA.debugLine="End Sub";
  return "";
  }
  public static String  _stopbtn_click() throws Exception{
  RDebugUtils.currentModule="main";
  if (Debug.shouldDelegate(mostCurrent.activityBA, "stopbtn_click", false))
  	 {return ((String) Debug.delegate(mostCurrent.activityBA, "stopbtn_click", null));}
  RDebugUtils.currentLine=393216;
   //BA.debugLineNum = 393216;BA.debugLine="Private Sub stopBtn_Click";
  RDebugUtils.currentLine=393217;
   //BA.debugLineNum = 393217;BA.debugLine="If player.IsInitialised Then player.Stop";
  if (mostCurrent._player.IsInitialised()) { 
  mostCurrent._player.Stop();};
  RDebugUtils.currentLine=393218;
   //BA.debugLineNum = 393218;BA.debugLine="End Sub";
  return "";
  }
  }