Italian java.lang.IllegalArgumentException: width and height must be > 0

fifiddu70

Well-Known Member
Licensed User
Longtime User
Ciao a tutti, qualcuno sa dirmi perchè crasha l'app per vedere le mie webcam cittadine usando il codice per vedere le immagini di una ip cam attraverso la webview e imageview restituendomi un messaggio come da titolo?
succede solo se la webcam non è raggiungibile
mentre se funziona la webcam allora funziona,
altro neo, quando non crasha mi da la solita risposta della pagina non raggiungibile all'indirizzo..... , vorrei che questa non fosse visualizzata perchè contiene informazioni della webcam.
 

Star-Dust

Expert
Licensed User
Longtime User
Quindi se le WebCam non funziona , l'app di visualizzazione non funziona e non visualizza immagini?
E tu vorresti che visualizzasse anche se la WebCam non è attiva?
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
Che era la webview1 che non cattura immagini lo avevo capito, volevo capire che cosa posso fare al posto di farla crashare e sopratutto evitare che si veda il messaggio di errore quando a volte l'indirizzo web nn e raggiungibile.
 

Star-Dust

Expert
Licensed User
Longtime User
Su quale piattaforma, b4A, b4i o B4J?
 

Star-Dust

Expert
Licensed User
Longtime User
Per b4A c'è un programma di Erel per ricevere il video senza usare webview ma il socket.
Fa al caso tuo e ti permetterà di vedere se c'è flusso.
Purtroppo adesso sono fuori sede, stasera ti fornirò il link.
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
Gentilissimo, aspetto con ansia, spero di risolvere la cosa con questo aiuto.
 

Star-Dust

Expert
Licensed User
Longtime User
Scusa il ritardo. Ecco l'esempio
 

Attachments

  • ClientMPEG.zip
    10.3 KB · Views: 106

fifiddu70

Well-Known Member
Licensed User
Longtime User
Ho provato ma nulla, non si apre perchè non ha il videostream.cgi questa telecamera sono solo riuscito a catturare le immagini la mia telcamera funziona solo se inserisci questo codice qui sotto, sei lo copi ed incolli nel tuo browser vedrai questa via:
il problema che non sono riuscito a capire come intercettare l'errore per inserire un messaggio al posto di crashare,
ho provato con un istruzione if ma nulla, crasha sempre,
esempio:
Sub timer2_Tick
    If ImageView1.Bitmap > 0 Then
    ImageView1.Bitmap=WebView1.CaptureBitmap
    ImageView1.Visible=True
    WebView1.Visible=False
    timer1.Enabled=True
    timer2.Enabled=False
    else
   
    msgboxasync("nessuna immagine caricata","AVVISO")
   
End If
' non va nemmeno con quest'altro codice:

If WebView1.CaptureBitmap.Height < = 0 Then
        msgboxasync("nessuna immagine caricata","AVVISO")
       
        else
        ImageView1.Bitmap=WebView1.CaptureBitmap
    ImageView1.Visible=True
    WebView1.Visible=False
    timer1.Enabled=True
    timer2.Enabled=False
       
    End If  
   
End Sub
'che faccio????????
'fin quando la telecamera funziona e cattura l'immagine e tutto ok ma appena la telecamera e spenta
'e un utente con la app vuole aprire quella telecamera l'app va in crash con il messaggio descritto nel titolo
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
Questo è il progetto:
progetto:
#Region  Project Attributes
    #ApplicationLabel: PartannaLive
    #VersionCode: 1
    #VersionName: 1.0
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: portrait
    #CanInstallToExternalStorage: False
    #BridgeLogger: True 
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Private timer1 As Timer
    Private timer2 As Timer
End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    Private WebView1 As WebView
    Private ImageView1 As ImageView
    Dim WebView1e As WebViewExtras
    Private Spinner1 As Spinner
    Dim pippo1 As Int
    pippo1 = Rnd (3,20)
    Dim pippo2 As Int
    pippo2 = Rnd (3,20)
    Dim pippo3 As Int
    pippo3 = Rnd (3,20)
    Dim pippo4 As Int
    pippo4 = Rnd (3,20)
    Dim pippo5 As Int
    pippo5 = Rnd (3,20)
    Dim pippo6 As Int
    pippo6 = Rnd (3,20)
    Dim pippo7 As Int
    pippo7 = Rnd (3,20)
    Dim pippo8 As Int
    pippo8 = Rnd (3,20)
    Private lblscegli As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Layout")
    WebView1e.addJavascriptInterface(WebView1, "B4A")
    WebView1.JavaScriptEnabled=True
    WebView1e.addWebChromeClient(WebView1, "")
    WebView1.Color = Colors.ARGB(1, 255, 255, 255) 
    ImageView1.Color = Colors.ARGB(1, 255, 255, 255) 
    WebView1.SetLayout(3%x,8%y,93%x,40%y)
    ImageView1.SetLayout(3%x,8%y,93%x,40%y)
    lblscegli.SetLayout(4%x,41%y,94%x,8%y)
    Spinner1.SetLayout(3%x,48%y,93%x,8%y)

    timer1.Initialize("timer1",1000)
    timer2.Initialize("timer2",500)
    timer1.Enabled=True
  
    Spinner1.Add("VIA GRAMSCI")
    Spinner1.Add("ROTONDA VIA GRAMSCI")
    Spinner1.Add("PIAZZA MERCATO")
    Spinner1.Add("VIALE PAPA GIOVANNI NORD")
    Spinner1.Add("PIAZZA FALCONE E BORSELLINO")
    Spinner1.Add("PIAZZA BELVEDERE")
    Spinner1.Add("VEDUTA PONTE C/DA CAMARRO")
    Spinner1.Add("ROTONDA VIA XV GENNAIO")
  
End Sub

Sub Activity_Resume 
  
End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Private Sub WebView1_PageFinished (Url As String)
    WebView1.Visible=False
    ImageView1.Visible=True 
    timer1.Enabled=True
End Sub

Sub timer1_Tick
  
    If Spinner1.SelectedItem = "VIA GRAMSCI" Then
        WebView1.LoadUrl("http://webcamgramsci.ddns.net:81/webcapture.jpg?user="&pippo1&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
  
    else if Spinner1.SelectedItem = "ROTONDA VIA GRAMSCI" Then
        WebView1.LoadUrl("http://rotondaviagramsci.ddns.net:83/webcapture.jpg?user="&pippo2&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
      
    else if Spinner1.SelectedItem = "PIAZZA MERCATO" Then
        WebView1.LoadUrl("http://sav39nas.homepc.it:82/webcapture.jpg?user="&pippo3&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
      
    else if Spinner1.SelectedItem = "VIALE PAPA GIOVANNI NORD" Then
        WebView1.LoadUrl("http://vialepapagiovanni.ddns.net:84/webcapture.jpg?user="&pippo4&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
      
    else if Spinner1.SelectedItem = "PIAZZA FALCONE E BORSELLINO" Then
        WebView1.LoadUrl("http://alterego.dvrdns.org:85/webcapture.jpg?user="&pippo5&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
      
    else if Spinner1.SelectedItem = "PIAZZA BELVEDERE" Then
        WebView1.LoadUrl("http://alterego.dvrdns.org:81/webcapture.jpg?user="&pippo6&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
      
    else if Spinner1.SelectedItem = "ROTONDA VIA XV GENNAIO" Then
        WebView1.LoadUrl("http://rotondacamarro.ddns.net:83/webcapture.jpg?user="&pippo7&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
      
    else if Spinner1.SelectedItem = "VEDUTA PONTE C/DA CAMARRO" Then
        WebView1.LoadUrl("http://pontecamarro.ddns.net:84/webcapture.jpg?user="&pippo8&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
    End If

End Sub

Sub timer2_Tick
  
    ImageView1.Bitmap=WebView1.CaptureBitmap
    ImageView1.Visible=True
    WebView1.Visible=False
    timer1.Enabled=True
    timer2.Enabled=False
  
End Sub

Private Sub Spinner1_ItemClick (Position As Int, Value As Object)
  
End Sub

' sono 8 webcam cittadine
queste telecamere sono quelle cinesi da 25 euro esterne con rotore, sono bellissime ma non sono riuscito a trovare il videostream da inserire nell'app, solo la foto, utilizza una app chiamata icsee.
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Dammi un pò di tempo che controllo
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
51rPQe0UbkL._AC_SL1181_.jpg
 

Star-Dust

Expert
Licensed User
Longtime User
La differenza che la telecamera non manda immagini in streaming MJPEG ma manda una sola immagine fissa JFIF e chiude la connessione. Ecco perché non c'è un video streaming, semplicemente perché non fa streaming.

Bisogna modificare il codice così oltre a ricevere un flusso continuo di streaming possa ricevere anche una singola immagine. Sto facendo delle prove per adattare il sorgente.
Ovviamente con questa telecamera ogni volta che vuoi aggiornare l'immagine ti devi ricollegare. Facendo un collegamenti a intervalli regolari ottieni qualcosa simile a uno streaming
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Ecco adesso funziona.
Comunque l'indirizzo che metto come vedrai nell'esempio non deve contenere la porta come invece accade sul WebView.

Ho messo un refresh dell'immagine ogni 60 secondi.

PS. La foto della WebCam la puoi anche togliere non aiuta in nessun modo sul piano tecnico
 

Attachments

  • ClientMPEG.zip
    10.6 KB · Views: 97
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Questo è il progetto:
progetto:
#Region  Project Attributes
    #ApplicationLabel: PartannaLive
    #VersionCode: 1
    #VersionName: 1.0
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: portrait
    #CanInstallToExternalStorage: False
    #BridgeLogger: True
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Private timer1 As Timer
    Private timer2 As Timer
End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    Private WebView1 As WebView
    Private ImageView1 As ImageView
    Dim WebView1e As WebViewExtras
    Private Spinner1 As Spinner
    Dim pippo1 As Int
    pippo1 = Rnd (3,20)
    Dim pippo2 As Int
    pippo2 = Rnd (3,20)
    Dim pippo3 As Int
    pippo3 = Rnd (3,20)
    Dim pippo4 As Int
    pippo4 = Rnd (3,20)
    Dim pippo5 As Int
    pippo5 = Rnd (3,20)
    Dim pippo6 As Int
    pippo6 = Rnd (3,20)
    Dim pippo7 As Int
    pippo7 = Rnd (3,20)
    Dim pippo8 As Int
    pippo8 = Rnd (3,20)
    Private lblscegli As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Layout")
    WebView1e.addJavascriptInterface(WebView1, "B4A")
    WebView1.JavaScriptEnabled=True
    WebView1e.addWebChromeClient(WebView1, "")
    WebView1.Color = Colors.ARGB(1, 255, 255, 255)
    ImageView1.Color = Colors.ARGB(1, 255, 255, 255)
    WebView1.SetLayout(3%x,8%y,93%x,40%y)
    ImageView1.SetLayout(3%x,8%y,93%x,40%y)
    lblscegli.SetLayout(4%x,41%y,94%x,8%y)
    Spinner1.SetLayout(3%x,48%y,93%x,8%y)

    timer1.Initialize("timer1",1000)
    timer2.Initialize("timer2",500)
    timer1.Enabled=True
 
    Spinner1.Add("VIA GRAMSCI")
    Spinner1.Add("ROTONDA VIA GRAMSCI")
    Spinner1.Add("PIAZZA MERCATO")
    Spinner1.Add("VIALE PAPA GIOVANNI NORD")
    Spinner1.Add("PIAZZA FALCONE E BORSELLINO")
    Spinner1.Add("PIAZZA BELVEDERE")
    Spinner1.Add("VEDUTA PONTE C/DA CAMARRO")
    Spinner1.Add("ROTONDA VIA XV GENNAIO")
 
End Sub

Sub Activity_Resume
 
End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Private Sub WebView1_PageFinished (Url As String)
    WebView1.Visible=False
    ImageView1.Visible=True
    timer1.Enabled=True
End Sub

Sub timer1_Tick
 
    If Spinner1.SelectedItem = "VIA GRAMSCI" Then
        WebView1.LoadUrl("http://webcamgramsci.ddns.net:81/webcapture.jpg?user="&pippo1&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
 
    else if Spinner1.SelectedItem = "ROTONDA VIA GRAMSCI" Then
        WebView1.LoadUrl("http://rotondaviagramsci.ddns.net:83/webcapture.jpg?user="&pippo2&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
     
    else if Spinner1.SelectedItem = "PIAZZA MERCATO" Then
        WebView1.LoadUrl("http://sav39nas.homepc.it:82/webcapture.jpg?user="&pippo3&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
     
    else if Spinner1.SelectedItem = "VIALE PAPA GIOVANNI NORD" Then
        WebView1.LoadUrl("http://vialepapagiovanni.ddns.net:84/webcapture.jpg?user="&pippo4&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
     
    else if Spinner1.SelectedItem = "PIAZZA FALCONE E BORSELLINO" Then
        WebView1.LoadUrl("http://alterego.dvrdns.org:85/webcapture.jpg?user="&pippo5&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
     
    else if Spinner1.SelectedItem = "PIAZZA BELVEDERE" Then
        WebView1.LoadUrl("http://alterego.dvrdns.org:81/webcapture.jpg?user="&pippo6&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
     
    else if Spinner1.SelectedItem = "ROTONDA VIA XV GENNAIO" Then
        WebView1.LoadUrl("http://rotondacamarro.ddns.net:83/webcapture.jpg?user="&pippo7&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
     
    else if Spinner1.SelectedItem = "VEDUTA PONTE C/DA CAMARRO" Then
        WebView1.LoadUrl("http://pontecamarro.ddns.net:84/webcapture.jpg?user="&pippo8&"&password=partanna&command=snap&channel=1")
        timer1.Enabled=False
        timer2.Enabled=True
    End If

End Sub

Sub timer2_Tick
 
    ImageView1.Bitmap=WebView1.CaptureBitmap
    ImageView1.Visible=True
    WebView1.Visible=False
    timer1.Enabled=True
    timer2.Enabled=False
 
End Sub

Private Sub Spinner1_ItemClick (Position As Int, Value As Object)
 
End Sub

' sono 8 webcam cittadine
queste telecamere sono quelle cinesi da 25 euro esterne con rotore, sono bellissime ma non sono riuscito a trovare il videostream da inserire nell'app, solo la foto, utilizza una app chiamata icsee.
Questo codice è scritto molto male.
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
Ecco adesso funziona.
Comunque l'indirizzo che metto come vedrai nell'esempio non deve contenere la porta come invece accade sul WebView.

Ho messo un refresh dell'immagine ogni 60 secondi.

PS. La foto della WebCam la puoi anche togliere non aiuta in nessun modo sul piano tecnico
sto usando il tuo codice modificato, ma per refreshare l'immagine devo inserire un timer di almeno 500ms per aggiornare l'immagine e sembrare quasi in tempo reale, ma adesso mi da questo errore: mjpeg_sock_connected (java line: 321)
 
Top