Please note that as of October 24, 2014, we will be archiving some of the Nokia Developer discussion boards. The Nokia Asha and Nokia X sections will remain open for continued use. The "Windows Phone/Lumia" and "Other Platforms" sections will become read-only. For your Windows Phone development questions, we invite you to visit the Microsoft Developer Network (MSDN) discussion forums.

If this is your first visit, be sure to check out the FAQ. To start viewing messages, select the forum that you want to visit from the selection below.

New developer, want some information about APIs/SDKs

(If I put this in the wrong forum, let me know, apologies in advance if so)

Hey all, name's Eli.

I'm an iOS developer with some experience in Java, and recently decided to make some forays into other avenues of development. Sometimes it's good to try something new, it helps keep general skills honed.

Anyways, I decided to work on a research project working on audio enciphering (application of encryption methods to audio streams) and while newer phones have very well-documented APIs and many times, broad-spectrum feature access, I wanted to test the result on something that could be obtained more economically than say, an iPhone (while I do consider myself to be a dedicated developer, spending $650 on an iPhone just to have for software testing purposes still isn't quite appealing to me).

My first phone for about 4 years was a Nokia and before that, my parents have had quite a few. I'm familiar with them, just not with their development. My thought was to test on something like a Nokia 6300, as I read that it can be developed onto. Knowing that everyone is jumping on the smartphone market nowadays, prices for the traditional candybar phones has gone through the floor, making them appealing as semi-disposable development tools.

My main questions being,

1. How "thorough" are the SDKs? Do they allow for access/control/manipulation over most of the phone's settings?
2. Do the SDKs allow for in-house UI design that isn't programatic in nature? (I'm very much used to iOS UI "storyboard" creation, so the idea of graphically laying out a UI is appealing to me)
3. Which SDK(s) do I need for the 6300? Unlike other phones, Nokia as a manufacturer has spanned multiple different OSs and I'm not familiar with all the lineages. I don't want to work to develop a whole software project and have it be Greek to my development device.

That being said, I think more questions will come up later as I get more involved. I look forward to being part of a new development community and well, learning a few new things.

Re: New developer, want some information about APIs/SDKs

The J2ME or just JME (Java Micro Edition) environment for Nokia's Series 40/Asha platforms (or any platform with J2ME) is fairly limited in terms of what actual phone functions it allows. And there is no JNI, Java Native Interface that allows bypassing the Java virtual machine with so called "native", host OS level code (like on a PC, for example, or on Android).

The "web runtime" environment for "web apps" is even more restricted (less access to phone or phone OS features, such as the local file system).

On Nokia's Symbian/S60 (Series 60) based phones, the Symbian OS C++ and platform specific APIs provided much more and direct access.

Re: New developer, want some information about APIs/SDKs

Originally Posted by petrib

The J2ME or just JME (Java Micro Edition) environment for Nokia's Series 40/Asha platforms (or any platform with J2ME) is fairly limited in terms of what actual phone functions it allows. And there is no JNI, Java Native Interface that allows bypassing the Java virtual machine with so called "native", host OS level code (like on a PC, for example, or on Android).

The "web runtime" environment for "web apps" is even more restricted (less access to phone or phone OS features, such as the local file system).

On Nokia's Symbian/S60 (Series 60) based phones, the Symbian OS C++ and platform specific APIs provided much more and direct access.

Okay. That's one of the concerns I've heard about the JME platform is that it doesn't allow for much access.

Now with the Symbian OS SDKs is the access sufficient to directly modify the audio stream (manipulate driver data directly?) I know that this is possible in iOS circles using low-level audio frameworks, but is there an analogue to this for S60 devices?

Because that probably doesn't help for what I want to do, I'll elucidate: in a nutshell, I'm trying to

a) develop a way to encipher audio using only the phone's existing hardware and software conventions (no hardware hacking, no software bypassing)
b) use a standard cipher (AES/RSA/DES, etc.) as a real-time "stream" cipher (that is, data is continuously rotated through the cipher function in real-time).

This requires that I have the ability to manipulate the audio stream at low-level - I essentially have to play "man in the middle" and insert a cipher algorithm into low-level code so it sits between the mic and whatever the data is to be used for (voice call/VoIP/etc.), you probably understand the concept.

It's a stretch of concept, but do you think the Symbian OS C++ SDK would have API access that complete?

Re: New developer, want some information about APIs/SDKs

Problem with Symbian based phones (at least those from Nokia) is that the phone-part is handled outside (separately from) the Symbian OS where the telephony APIs request the separate "telephony stack" to do something, but the "telephony stack" does not necessarily route the voice call audio through Symbian at all. You will get some events and status info about incoming calls or calls in progress, etc., but I suspect there's no way to easily intercept the audio between mic/speaker and network. At least not from a user-mode app.

And, then, doing a privileged driver on Symbian is a problem as you can't install new drivers unless you have sufficient signing privileges and there already is a "stub" driver present in the firmware "ROM". You'd have to bypass Symbian Platform Security (which is not impossible), but probably also use/access APIs that are not in standard developer SDKs (i.e., no documentation, probably no required header files either, etc.).

SourceForge has a full snapshot of the Symbian OS V9.4or5something (a.k.a. Symbian^3) from the time when it was (briefly) fully open source software. Look for "symbiandump". However, the open source version is just the OS parts (well, Symbian OS + much of what used to be a separate S60 layer and apps), but not everything (no Nokia-proprietary, hardware-specific code such as drivers, etc.).

Re: New developer, want some information about APIs/SDKs

Originally Posted by petrib

Problem with Symbian based phones (at least those from Nokia) is that the phone-part is handled outside (separately from) the Symbian OS where the telephony APIs request the separate "telephony stack" to do something, but the "telephony stack" does not necessarily route the voice call audio through Symbian at all. You will get some events and status info about incoming calls or calls in progress, etc., but I suspect there's no way to easily intercept the audio between mic/speaker and network. At least not from a user-mode app.

And, then, doing a privileged driver on Symbian is a problem as you can't install new drivers unless you have sufficient signing privileges and there already is a "stub" driver present in the firmware "ROM". You'd have to bypass Symbian Platform Security (which is not impossible), but probably also use/access APIs that are not in standard developer SDKs (i.e., no documentation, probably no required header files either, etc.).

SourceForge has a full snapshot of the Symbian OS V9.4or5something (a.k.a. Symbian^3) from the time when it was (briefly) fully open source software. Look for "symbiandump". However, the open source version is just the OS parts (well, Symbian OS + much of what used to be a separate S60 layer and apps), but not everything (no Nokia-proprietary, hardware-specific code such as drivers, etc.).

Ah. So it'd have to be modifying OS runtime/handling/drivers and not just app interface-to-resource issues. And without those hardware-specific drivers, you can't do effectively anything. It's effectively "black-box".

Sounds like more effort than it's worth, to be honest - do the APIs, though, have access to MMS/SMS resources? Those are (usually) much more oriented in software, and relatively high-level at that.

Re: New developer, want some information about APIs/SDKs

Yes, with both Java and Symbian/S60 APIs you can send SMS/MMS.

With Java you can also receive SMS, but only at specific port numbers (which the sender has to set), but from Java there's no access to the regular Inbox/Outbox/Sent or other message directory/folder content. With Symbian APIs you can access the Inbox/etc.

Re: New developer, want some information about APIs/SDKs

I am not sure how Symbian/S60 appeared here, the Nokia 6300, http://developer.nokia.com/devices/d...ons/nokia-6300, is a Series 40 device. It has Java ME, may have some FlashLite, and I am not sure if it has Web Apps (at least http://store.ovi.com/content/51924 says it is not available).
A remark for the Symbian-track: it may be worth mentioning that Symbian has been ramped down by Nokia (and alternative manufacturers do not exist any more), having fun with it is still possible to some extent, but that is all. Even the fun part is reduced as developer certificates (device-dependent signature files allowing you to access more protected API-s) are not released any more (http://www.symbiansigned.com stopped operating on the 1st of January).

I decided to work on a research project working on audio enciphering …

I do not know if that helps, just a side note: Nokia phones offer a (very good) VoIP/SIP stack with TLS (Symbian even with PFS cipher suites) and sRTP (AES-128) support built-in, even with HD-Voice thanks to AMR-WB. Not a single line of code has to be written. All you need is a VoIP server and a configuration file to enable that VoIP part in the phone …

To answer your question: When it comes to Java 2 Micro Edition, JSR-135 and BouncyCastle are the parts you should look at. Anyway, I doubt the Nokia J2ME APIs are stable (and fast) enough for such a project. Anyway, you have to test/double-check that assumption yourself.