robi sen

author
+ Follow
since Jan 25, 2011
Merit badge: grant badges
For More
Cows and Likes
Cows
Total received
In last 30 days
0
Forums and Threads

Recent posts by robi sen

Augusto,

Yes and thats why I emphasize things like reusing code for various reasons. NDK rarely will increase performance. In some rare cases it might.
14 years ago
Christian,

Sounds like your interested in malware. Something I am interested in as well. That being said I am not sure this is the best forum for this discussion. There are numerous ways to do 'covert' exfiltration on Android. The easiest, and what most Malware developers do, is just ask for permission for a service to do something in the back ground, like send SMS, or connect to the internet. If you look at malware currently in the App Market this is the most common mechanism. There are other ways and if you are interested I suggest you join one of the many digital security professional mailing lists or forums where researchers discuss these sorts of things in detail.

Cheers,

Robi
14 years ago
Great question. I would first have you look at http://developer.android.com/sdk/ndk/overview.html and read the section “When to Develop in Native Code.“ In general it is best to go to the NDK when you perhaps want to use something in C or C++ that already exists and you cannot either port it to Java because of time, complexity, or licensing issues. For example one of our clients recently had us integrated a C based DRM system from a large company. That company does not allow you to make change to the DRM system and you essentially have to use their compiled code as is (although they allow cross-compiling and give you the source). So in this case there were real legal/business requirements that forced the use of the C code. In some other cases, such as image processing, image detection, or some other CPU intensive task that does not use a huge amount of memory C might make sense. Furthermore since, in those areas, there is such a wealth of C code that is very well written it would be ease to reuse some C projects and thus those would be good candidates as well. In general though you want to stay away from the NDK unless you have a real need for it.
14 years ago
Zohed you will need to provide more information to me. What example, what error, etc
14 years ago
“I'm assuming that WiFi would not always be available, so I'm not sure if I would want to rely on that. That said, I have not explored it enough to know how that can be utilized for peer to peer communication. That could be interesting. I am assuming you are talking about an ad-hoc scenario?
.”
I am talking about WiFi radio in a handset to WiFi radio in another handset or peer to peer communication. I am not talking about WiFi via an Access Point to the public internet and then to another handset. You could also use the cellular radio in your phone GSM or CDMA radio for peer to peer but this is pretty difficult and would probably require you hacking the drivers so probably not your best option but the WiFi to WiFi peer to peer has already been done on android so I would suggest that route unless you want to start messing with add ons.
14 years ago
Kevin,
You can do long range with Bluetooth but it would require a powerful antennae that would probably end up being a dongle attached to your phone. Something we have worked on in my day job as well as integrating things like sat radio, via a cable, to a Android powered platform. Another option might be a Zigbee dongle? Zigbee is an ultra wide band technology like Bluetooth but much more robust and designed for long ranges. I have used it for M2M (machine to machine like cell to cell). Can you tell us more about your application and why you could not just using the WiFi for peer to peer coms or even you GMS/CDMA
14 years ago
Shashank Agarwalg,
“ya i knows that android fulfills the my requirements . But for using android we still need some hardware configuration. like I can't put android on a smart phone which is not made for the android.”
Shashank,
Well you can put Android on an iPhone, or a Palm, or a windows 7 phone. Indeed you can put Android on almost anything and people have. What is so different about Android is that it is a platform, including OS, driver plugin architecture, VM, API’s, tooling, and more that is designed to run on resource constrained platforms. So almost any smart phone you can put Android on. A lot of the guys I work with have iPhone’s that they can also switch to Android.
14 years ago
Migue Lon,
I have done some system integration, machine to machine integration, and integration with SCADA systems with Android devices. If you google around you will see other people who have done all sort of system automation using Android devices as command and control systems as well as even sensor platforms. As for stability and security I think the stability is fine in Android but security is a huge discussion that has to incorporate platform, processes, human factors, workflow, and the like before you even touch on technology.
14 years ago
Rakesh,
Great questions especially about testing. First you can go to http://developer.android.com/index.html and download the SDK and if you use Eclipse you can also the ADT plugin for Eclipse which greatly helps in development. There are also numerous examples at the site to help you get started. Or you could by Android in Action which walks you through getting setup, started, and developing real applications.
Now as for testing there are many different forms of testing as well as things like quality assurance. For the most basic forms of testing, unit testing (via JUNIT), the Android ATP plugin for Eclipse has this built in so that you can exercise any application you develop. You can also use Android’s Emulator which comes with the SDK. The Emulator allows you to run virtual instances of Android so that you can test and debug your applications before you put them on a phone. Also you can put your application on your phone and test with little fear as long as you are not using the API to do things like delete files, change system settings, and the like. Generally if you get to that stage you want hardware you can test on that you do not mind if you accidentally overwrite all your contacts and such. Android also supports functional testing via JUNIT and others have integrated different testing frameworks with Android. Thus you can lets say have a database with various test data and then have your tests pull that data and exercise your application to perform functional testing. Furthermore you can use tools like Hudson, Maven, Ant etc to integrate with the SDK and Emulator and even, automatically on a build server, kick of builds and tests in a continuous integration development environment to maintain quality in larger projects. In the case of testing security you can even integrate tools like Sulley to automatically perform fuzzing of applications or Android. As such more or less anything you want to do in the form of testing you can do on Android either in the emulator, or on a handset, and automate it to your hearts content.
Does that help?
14 years ago
What is your current understanding of Java? If you have little to none and have little other programing experience you will find it somewhat frustrating. If you really just want to make straight forward apps with little programing check out the Android App builder that allows you to build android apps with little programing http://appinventor.googlelabs.com/about/.

Now if you have a basic understanding of Java I say just go for it. As long as you are not trying to make something like a very sophisticated video game or something very complex Android is pretty straightforward to develop once you understand its development paradigm.
14 years ago
It does but not into great detail. Basically if you know OpenGL ES Android has very strong support for it. Furthermore latter versions of Android or going to add a simpler and better 3D support as well in Android 3.0. Check out http://developer.android.com/sdk/android-3.0-highlights.html

"Hardware-accelerated 2D graphics

Android 3.0 offers a new hardware-accelerated OpenGL renderer that gives a performance boost to many common graphics operations for applications running in the Android framework. When the renderer is enabled, most operations in Canvas, Paint, Xfermode, ColorFilter, Shader, and Camera are accelerated. Developers can control how hardware-acceleration is applied at every level, from enabling it globally in an application to enabling it in specific Activities and Views inside the application.

Renderscript 3D graphics engine

Renderscript is a runtime 3D framework that provides both an API for building 3D scenes as well as a special, platform-independent shader language for maximum performance. Using Renderscript, you can accelerate graphics operations and data processing. Renderscript is an ideal way to create high-performance 3D effects for applications, wallpapers, carousels, and more."

Once again though its worth repeating that if you know OpenGL ES your going to find doing OpenGL in Android pretty straight forward.
14 years ago
Interesting question. In general its like developing for a specific desktop operating system such as windows where you target the specific hardware. In some cases you need to take in account specific vendor modifications to Android but most of the time you can target a set of technical specifications if you want to develop something like a game. For more generic applications, such as a todo list, you can build your application so that it conforms to screen size, orientation, and the like with very little concern about specific platform. In general the simpler your application the less you have to worry about the specific phone. Thus a simple todo list app may work on almost any phone from a HTC Hero running 1.6 to a Nexus S running 2.3. Something like a video game were you count on the API, specific hardware like a Nvida accelerator, certain clock speed of CPU, size and type of display etc your are going to really have to test your app on specific hardware and there will be little you can do for backwards compatibility or graceful degradation.
14 years ago
“What is the uplift to take a mid-level J2EE developer to become an Android developer? Are development environments similar and the APIs like enough to make the leap without a large learning curve? “
I would say that if you know Java very well the learning curve is pretty shallow. At work one very senior Java developer was able to make a very sophisticated Android Video player, with no previous Android experience, in a couple of weeks. He also made several other Android apps including a mapping application. He might be an exception but other Java developers at my work usually stumble with security permissions, the Android intent model, and a few other items but then quickly become productive.

“I know the interaction with serial devices at the desktop level can be pain (such as a GPS,) is the interaction/integration easier on the Android? “
Not 100% if you are asking about how hard is it to work with sensors such as GPS from Android or how hard it is to use sensors via a desktop and the Android emulator. If you just mean how hard is it to access sensors from Android I would say it is pretty trivial.
14 years ago
Well we can disagree but android its much closer to the idea of oak/java then java ended up being. Also making the comparison between java me/Android is not analogous at all and the simple fact is android is being used for a large number of consumer devices and its a wonderful fit. Trying to do the same with java me is more or less a non sequitur
14 years ago