Share My Creation StreamNation Studio - Need beta testers!

StreamNation Studio - Live stream from your Droid to your website, anywhere!

StreamNationWithIconDark.png

Hello Everyone,

After a long time, with up and downs, a lot of struggling, I can present you my newest project 'StreamNation Studio'.

I. So What does StreamNation Studio exactly do:

- You can live stream snapshots in 1 second intervals to your own website!
- Go Solo or make your own Crew!
- Overlay images WHILE livestreaming!
- Add amazing effects to the stream!
- Any network! (WiFi, 3G, EDGE, ...)
- Easy to install. Easy to use!



II. How does StreamNation Studio work:


I used my own Advanced Camera Library to add some new features to it. This is where I struggled the most.
But thanks to Agraham, we figured it out. (Thanks again :D). So how does it actually work now?
When you press the Live button, the app uses my Advanced Camera Library to capture a frame on the current frame.
It decodes itself to a jpeg and it is 'putted' into a bytearray. Next, the bytearray encodes as a Base64 string,
sends away with a POST Method to the listening PHP server and raises an event. And than, we just loop it in the called event.



III. Beta Version:


Now, The application is still in Beta-version, this is where I want to ask you, guys. If you guys (and girls) are intrested
you can try the beta version now and by helping, finding bugs, giving improvements, suggestions, you will receive a free
copy of the Full Version of StreamNation Studio and Tracked!
Note that the app is heavily protected, licensed and copyrighted, so don't steal :eek:



IV. How to get the Beta version and work with it?
(Android Version 2.1 +)

Download the beta here: StreamNation Studio website.
1. Click the beta release button.
2. Read the TOS. You don't want to sell your soul, do you?
3. Press the "I agree to the RootSoft Terms of Service" if you agree.

Please download it only once as this will affect our statestics!

Edit: Read the README's in the .zip file.


V. What does the PHP files do?

There are two versions of plugin.php. plugin.php and plugin1.php. You can choose which one to use.
The difference between them is that plugin.php supports the image overlay, but the negative side of it,
is that it is much slower because it 'merges' the images into the frames. This works best on Wifi.


Now please, feel free to give any suggestions, improvements, bugs, PHP code improvements...
Like screen resolution, how it looks like on your device, ...
This will really help us a lot, and thanks to Erel for his wonderful creation. :)

Thanks,
XverhelstX
 

Attachments

  • sprite0.jpg
    sprite0.jpg
    4.8 KB · Views: 15,409
  • 1.jpg
    1.jpg
    19.1 KB · Views: 466
  • 3.jpg
    3.jpg
    14.4 KB · Views: 415
  • 4.jpg
    4.jpg
    14.7 KB · Views: 347
Last edited:

Fox

Active Member
Licensed User
Longtime User
Congrats to your app nice work :)

but i have an question about the 30 times.

Is it possible you can post the code for the 30 times routine? It would be very helpfull.
 

XverhelstX

Well-Known Member
Licensed User
Longtime User
Thanks Kamac, ;D

@Fox: Sure.
You should first know some php and (online) database knowledge.

Before my app runs (in globals) I send my IMEI with a POST Method to a php webserver. I do this with one code with a library I have written, instead of using HTTPUtils etc.
The database exists of three columns:
N°, IMEI, Trial.

The PHP file looks in the database if the IMEI exists, if it exists, it looks for the amount in the third column and substracts 1. If it doesn't exists, a IMEI.txt file is generated. The file contains how much the app can be opened. 30 here.
If 0 is succeeded, the text Expired appears.

In my app, a timer runs during 6 seconds. This is done to process everything server side. When the timer ticks, I perform a http GET to the IMEI.txt (its not IMEI.txt but e.g. 59644885484.txt). If the response string is an amount, then the app runs, otherwise if it's "Expired", then the app is closed.

This should do it normally.
You can use the same method to do a x-day trial.

Some code:

B4X:
Sub Globals
ProgressDialogShow("Trial Activated" & CRLF & "Connecting with webserver for authentication")
   Dim p As PhoneId
   Dim cantopen As Boolean
   cantopen = False
   Dim camera1 As AdvancedCamera
   Dim strActivationCheck As String
   strActivationCheck = "http://www.example.com/" & p.GetDeviceId & ".txt"

'Small password protection, PHP File on webserver, IMEI, Trials
   Camera1.AppTrial("Password","http://www.example.com/trialCheck.php",p.GetDeviceId,30)

   tmrEvaluation.Initialize("tmrEvaluation",6000)
   tmrEvaluation.Enabled = True

End Sub

Sub tmrEvaluation_tick
   ProgressDialogShow("Checking Activation.")
   tmrEvaluation.Enabled = False
   Dim request1 As HttpRequest
   request1.InitializeGet(strActivationCheck)
   request1.Timeout=50000
   If HttpClient1.Execute(request1, 1) = False Then
   Return
   End If
End Sub

Sub http_ResponseSuccess (Response As HttpResponse, TaskId As Int)
   ProgressDialogHide()
   If TaskId = 1 Then
   Dim strActivationResponse As String
   strActivationResponse = response.GetString("UTF8")
      If strActivationResponse = "Expired" Then
      cantopen = True
         Msgbox("The evaluation version of StreamNation Studio has expired." & CRLF & "You can buy the full version or take the chance of winning the full version by rating the app and giving it a small review!","Evaluation")
         ExitApplication
      Else
         Msgbox("You can run the app " & strActivationResponse & " more times.","Evaluation")
      End If
   End If

End Sub

Sub Http_ResponseError (Response As HttpResponse, Reason As String, StatusCode As Int, TaskId As Int)
    If TaskId = 1 Then
   Msgbox(Reason,"An error occured." & CRLF & "Check your internet connection or try again later.")
   ExitApplication
   End If

End Sub

Here is a maintenance table of how many times the app is downloaded, opened, used:

http://www.rootsoftllc.com/streamNation/trialStats.php

XverhelstX
 

Fox

Active Member
Licensed User
Longtime User
thanks for the code sniped very nice and impressive :sign0188:

Send you an pm
 

XverhelstX

Well-Known Member
Licensed User
Longtime User
Why do you do the check to server in a timer?
Otherwise, it is possible that the IMEI isn't included in the database YET or the file isn't created YET. (if you have a very large database e.g). So there app actually can find some data.

So I let the server do it server side work, and I take 6 seconds (to be sure that everything is done on server side) and then send the GET to get the data.


What happens if internet is disabled? (Although your app is internet based so I guess this question doesnt really apply! )

Good question actually.
People would be able to turn of their IC, open the app, bypass the trial, then press the home button and turn their IC on again. But because the HTTP POST tries to send to the Internet and doesn't have an IC, it will show the messagebox saying you don't have an IC and it will quit the app:

B4X:
Sub Http_ResponseError (Response As HttpResponse, Reason As String, StatusCode As Int, TaskId As Int)
    If TaskId = 1 Then
   Msgbox(Reason,"An error occured." & CRLF & "Check your internet connection or try again later.")
   ExitApplication
   End If

End Sub


Also, that first image is beautiful...love the fonts and color

Thanks :), made by Ben: Ben-A-Ball | Home

XverhelstX
 

XverhelstX

Well-Known Member
Licensed User
Longtime User
I guess doing the check locally, the user can back up the app, and reload from there.
yep

Also, if you do a hard coded date check in the app, that could work for a while.

Mhmm, It should be possible to work with dates, but the user would be able to change the current date on his phone. That's why I took a "30 times opening" trial version.

Is Ben a for-hire designer ?
Yes and no, You can hire him, but he made it for free to me. I credited him in my app though.
So I don't know if he would do it for free.

XverhelstX
 

rbsoft

Active Member
Licensed User
Longtime User
I like your solution for the evaluation, XverhelstX. Excellent idea to do it with the IMEI. I was just pondering over a solution for that. Comes in very handy.

Rolf
 
Top