Development environment:
- Device: Blackberry Storm2
- IDE: Eclipse Galileo, BB Plugin
- Reference API: 6.0
I am trying to scan all possible WiFi Access Points on a 1 minute period directly from my App but I do not want to -connect, authenticate, or add - any of those Access Point to any instance of my application or the device itself. I only want to read some sort of "Vector" with the information (BSID, etc) of the Access Points founded.
I have read for specific issue and there are a couple of posts that haven't been of any help:
- Scan for available Wi-Fi networks on BlackBerry
- List WiFi access points
I would really appreciate any help on this issue, I have tried to use:
- HotspotClient Class
But I have not succeed because I am not quite sure how to work with that class (knowing that its an abstract class)
The last I found is the
WLANInfo.WLANAPInfo
Class and I think it may be useful for my purpose... Any suggestion on this?
Thanks
I agree that using Hotspots Clients is not very convenient, requiring the user accept it out of the applicaiton. I haven't found a solution to this but you can build a (poor) list of wi-fi's by hooking up a WLANConnectionListener:
WLANInfo.addListener(someWLANConnectionListerner);
Then you can use the listener to log the ssid and other info of the networks the device connects to:
void networkConnected() {
AppMain.LogEvent("wLanListener: Network Connected.");
info = WLANInfo.getAPInfo();
}
Pretty lame, I know. Any other ideas?
Related
This is for a visualisation project on what data gets recorded about us from our phones.
The idea would be to log as much detail as is reasonable to an internal location (probably) on the phone for later analysis, e.g. HTTP requests. It doesn’t need to be secret at all – the subject will be aware they are participating – and it doesn’t have to be 100% automatic; if the phone owner needs to perform some action regularly that’s okay too, although they need to be able to use their phone approximately normally throughout the day.
I can’t find any Apple APIs that look suitable, but that’s hardly surprising. I can find some approaches that would potentially work on OSX (tcpdump, netstat), so perhaps a jailbroken iOS device would support one of those?
Alternatively, running a custom proxy server would open up a bunch more options, but is there any way to get a mobile device to reliably route through a proxy server?
It appears this question provides a viable proxy-server-based approach:
https://apple.stackexchange.com/questions/81102/proxy-settings-for-iphone-3g-connection
Basically, it seems it is possible to route all requests through a proxy server, even over cellular.
Not sure if this is the right place to ask the question.
I have a Blackberry Curve 9300 phone. Is it possible the access logs which shows when the phone was switched on and off. Also if it is logged when the data was used over network and over WiFi.
I would like to access it without using any code if possible. However, I do not mind a quick and dirty C# application that could allow me to do so. This is a once off activity and I do not really want to invest lot of time in writing code.
try using EventLogger API to get System events,and save it in Persistant DB as as the part of the your application and use it when required
I want to make application to control network traffic in blackberry java programming.
Example : I want to know how much traffic radio in or out today in my blackberry devices, like :
-Traffic radio in today : 1,29MB
-Traffic radio out today : 81.83kB
To get that number, what should i do?
Anyone can give me the source code to do that kind of stuff.
RadioInfo.getNumberOfPacketsSent
RadioInfo.getNumberOfPacketsReceived
But AFAIK, these methods return the number of bytes sent/received since the BB was powered on, so not sure you can have the number of bytes for a given day.
Hope it helps.
I read some of the similar posts on this site that deal with what seems to be the same issue and the responses didn't really seem to clarify things for me.
My application works fine in the simulator. I believe I'm on Bold 9000 with OS 4.6. The app is signed.
My app makes an HTTP call via 3G to fetch an XML result. type is application/xhtml+xml.
In the device, it gives no error. it makes no visual sign of error. I tell the try catch to print the results to the screen and I get nothing.
HttpConnection was taken right out of the demos and works fine in sim.
Since it gives no error, I begin to reflect back on things I recall reading back when the project began. deviceside=true? Something like that?
My request is simply HttpConnection connection = (HttpConnection)Connector.open(url);
where url is just a standard url, no get vars.
Based on the amount of time I see the connection arrows in the corner of the screen, I assume the app is launching the initial communication to my server, then either getting a bad result, or it gets results and the persistent store is not functioning as expected.
I have no idea where to begin with this. Posting code would be ridiculous since it would be basically my whole app.
I guess my question is if anyone knows of any major differences with device versus simulator that could cause something like http connection or persistent store to fail?
A build setting? An OS restriction? Any standard procedure I may have just not known about that everyone should do before beginning device testing?
Thanks
Just providing the URL will not work. You will have to append some info after the URL to determine the transport method your HTTP connection will use. For instance http://example.com;deviceside=true will use DirectTCP (you might also have to supply APN information but that's saved on the device for my phone). http://example.com;interface=wifi will use wi-fi. On OS 5 there's a ConnectionFactory class that makes this a lot easier. Here's a link that goes into more detail.
This was a tough one for me!
As Jonathan said you have to put some parameters in the url to make it work on the device. You shouldn't do it by hand but use the ConnectionFactory instead.
As you may thing this would just make it work but it doesn't!
The real problem is that not the url has been altered because it has ;interface=wifi;deviceside=true in it (in my case). Depending on the webserver accepting your request this could broke the code.
A solution I tried and that works is try to happend a fake parameter like
&foo=true -> &foo=true;deviceside=true
This will result as a standard parameter for the webserver but your device would use it to driver your connection.
On the simulator this work without this extra code because behind it there is a BIS server for you. On the device (as in my case) there isn't because I'm using a development device unregistered and without SIM (just wifi).
Another point is that the HttpConnection class doesn't handle HTTP 302 Redirect and if you get one you have to handle it manually.
It's probably an issue with the APN not being specified. See my answer for this question for details:
video streaming over http in blackberry
I would make this a comment, but I think I don't have enough rep yet for that... So I'll just answer and hope this doesn't get hosed for just pasting in some links.
I've been working on this exact sort of networking issue on our app this past week, and it is indeed tricky as some others have pointed out. Here are two links which really helped us out using HTTP on different devices, especially older devices which do not provide ConnectionFactory.
http://supportforums.blackberry.com/t5/Java-Development/Connecting-your-BlackBerry-http-and-socket-connections-to-the/td-p/206242
The first one has some code examples, including demonstration of querying the system's ServiceBook and CoverageInfo classes to make a decision about what kind of connection will work.
hallo,
I have a common question, I hope it is ok to ask it here.
I have a project, where I should develop a small appliation for BlackBerry. I know Java ME is the platform to do that (Browser and Widget are other opstion).
What I need to do is a samll application which pops-up after every call and asks the user if he wants to save(assign) this conversation (only the duration in minutes of the phone call is important) in his time-tracking database. He can click NO, but after it, he can start my application and see all unassigned phone calls and still he can assign them in the time-tracking db. This should happen offline and than be synchronized with the server via online connection.
My question now:
What APIs are to be used, for handling with the phone-calls?
Are there some downsides in this kind of application, which I newby can not see at first?
What about the different devices?
Thanks for any information you share with me, to help me avoid common newby mistakes!
Thnaks a lot.
That should definitely be doable, look at the PhoneListener interface to check when the phone call disconnects. What I would do is write the application as a system module, that will run in the background on startup. You can use an alternate entry point so that when the user clicks on your icon the application will create a GUI.
Edit: By the way BlackBerry uses an extended version of J2ME. You can ignore all the RIM specific extensions if you want and develop an app that will (theoretically) work on any J2ME device but you won't be able to use a lot of nice features including the PhoneListener interface. I doubt you'll be able to create this specific application with J2ME alone.