[Q] What OEM APIs there are? - Windows Phone 7 Software Development

Now that we have a way to use native apis with little bit of creativity, does anyone have any information what apis there are available? Or any advice how to figure out the content of missing header files, any tools for the job? I assume that the OEM API documentations are not available anywhere in the net (couldn't find with the Google anyway).
I for one would like to know what resources we have there to use, and evaluate if I can turn my sw ideas to reality.
Any hints would be greatly appreciated!

Just use Visual Studio 2008 with the Windows Mobile 6 Pro SDK installed. Pretty much anything will work. Bear in mind though that any apps relying on interoping means the app will not pass marketplace verification.
Also, the security issue of being sandboxed still applies, so without a lot of hacking it's not certain you would be able to access parts of the system.

Related

Desperately Needed

WP7 desperately need a 3g to wifi tethering app like myfi. I used to have an iphone but switched WP7 and now I need a 'myfi' like app badly.
Can someone some building this app ASAP.
at present it's not possible to even build one as there aren't any APIs for it. I'm sure this has been asked quite a few times on this forum already... please search... rather than just continually asking what people deem as a common requirement. also search the pinned threads as they're a good place to start for missing functionality...
There are APIs. Samsung phones can tether so yh APIs are there. WP7 is just CE with some changes/additions. Microsoft just isn't allowing access to the APIs...
Sent from my HD7 using Board Express
I would think that OEMs have a different set of APIs which provide them with native capabilities. I doubt the OEMs are writting their apps in just C# otherwise MS would have released those APIs as well.
also to note, those phones that can tether is done through the diagnostics, which would imply that they should be already in all windows phones and just dormant. i highly doubt it's specific to samsung phones. it may be that we only know how to do it with samsung phones now.
The Gate Keeper said:
I would think that OEMs have a different set of APIs which provide them with native capabilities. I doubt the OEMs are writting their apps in just C# otherwise MS would have released those APIs as well.
Click to expand...
Click to collapse
That's my point. The APIs exist, as does the base Windows CE system.
We just don't have the development tools nor do we have access to that level of the system to be able to write those applications ourselves.
We're limited to sandboxed Silverlight-based applications, but Microsoft and OEMs can use Native Code and APIs we don't have access to.
They exist, we just don't have access to them. Apple does the same thing with iOS.
Thanks for agreeing with me, though
also to note, those phones that can tether is done through the diagnostics, which would imply that they should be already in all windows phones and just dormant. i highly doubt it's specific to samsung phones. it may be that we only know how to do it with samsung phones now.
Click to expand...
Click to collapse
Which also means WP7 supports tethering. The functionality just isn't exposed to users in the general user interface, that is why you have to dig for it. The same thing is true for Sideloading XAPs, among other things.
It's there. The OS is totally capable of it. WP7 did, in fact, inherit a ton of functionality from Windows Mobile. The difference is that the new UI doesn't expose it to the user, and applications (and the system) are managed in a totally different way.
There's a huge difference between "does not exist" and "exists, but functionality is not exposed in the UI."
Windows on a PC can access drives, etc. by device name, but that is not exposed in the UI - for example. The same is true for many features in WP7 that are there by virtue of it being based on CE and tied (although Microsoft would want you to think differently) to Windows Mobile. They just chose not to expose this functionality.
Not saying it's totalyl based on WM, since that's obviously untrue. If that was the case stuff like full Exchange support, Video support for MMS, etc. would be working.
But the fact that this stuff is there and they're dragging their feet to allow users to use it is what's keeping lots of users off of WP7 at the moment. It's taking them too long to make changes that seem too simple... Maybe for the sake of security, I don't know. They haven't really been transparent with early adopters, IMO.
EDIT: Also, you can call Native Code from managed languages (C#, VB.NET, Java, etc.), so I'm pretty sure they are writing their apps in C# and only calling native code/libraries when they need to. Writing it in straight C/C++ is [potentially] more dangerous than using a Managed Language with Interop. I can't see Microsoft going for that.

[Q] WP7 and native for beginner

Hello everybody,
I got a WP7 Samsung Focus and I want to port my old application to this device and join native forces for WP7
My plan is simple: I'll convert my app into a dll, rewrite new gui in C# (or whatever the way to do it on WP7). I saw multiple posts about calling native code (original from Cris Walsh: http://goo.gl/2Tjks). Then I saw a few posts mentioning that it's impossible etc etc.
So, a few questions:
0) can I do it for my app (I don't need marketplace exams etc, I don't care for that)? I know that some WinAPI could be unavailable/broken, all I ask at this point if it's possible to load and run native dll without changing or re-flashing ROM.
1) ms wants 100$ out of my pocket to be able to deploy to my own device (WTF?!). What can I do to deploy to my phone without paying the crooks? (VS2010 tell me to register there and registration askes for 100$).
2) Is there a sample project I could D/L and run, I have zero experience in C# and I have no idea how to load and call native DLL from managed code in WP7? All these half broken samples are totally useless to me, I simply wanted to working HelloWorld app that loads and runs simple dll.
thanks
0) Yes, what you describe is possible. There are lots of limits, though - WP7 applications have very low permissions, and calling native code doesn't fix that. Unless you need to edit something outside the app's own iolated storage, though, you're probably OK.
1) Aside from the official marketplace account ($100), there are a few options:
a) if you've got an LG phone, they come with a built-in registry editor that can be used to dev-unlock your phone. I forget the exact key you need, though.
b) if you've got a student email address (ends in .edu) you can try registering through DreamSpark. This is free.
c) if you don't mind rolling back to pre-NoDo (7004 or 7008) you can use ChevronWP7 Unlock (instructions available on this forum). If you don't have a restore point that far back you can flash an official ROM for that version.
d) if you don't mind waiting, ChevronWP7 Labs will be available at some point (no ETA that I've seen, but it's been talked about for months) and will provide dev-unlock (but not marketplace account) for a nominal fee.
2) There are lots of apps distributed with source, and most of them will use some native code. You could do a search on this forum for subject lines including the tag "[SOURCE]" and find several (I release source for all my apps). However, I suspect what you'd find most useful is Heathcliff74's guide to WP7 apps that use native code, which is on this forum at http://forum.xda-developers.com/showthread.php?t=1299134. It includes step-by-step instructions.
Hope that helps! I look forward to seeing your app. Also, don't hesitate to ask for help with the actual development; I suck at GUIs and Silverlight but am fairly proficient at C# if you need somebody who knows that language, for example.
There is an ETA for the new ChevronWP7 unlocker:only a few weeks away from launch!
Hi GoodDayToDie
GoodDayToDie said:
0) Yes, what you describe is possible. There are lots of limits, though - WP7 applications have very low permissions, and calling native code doesn't fix that. Unless you need to edit something outside the app's own iolated storage, though, you're probably OK.
Click to expand...
Click to collapse
At this point I want to make a DLL from my simple app and call a few functions that interact with filesystem and network. FS is needed only for simple stuff (loading config file etc) from installation folder and creating some temporary files for local storage. Network is tcp/udp, I guess network should be available.
GoodDayToDie said:
1) Aside from the official marketplace account ($100), there are a few options:
...
Click to expand...
Click to collapse
I did some search, it seem that I've done that part. Chevron dev unlock was pulled out from their site, but the old version remains scattered all over the board. There is a good thread a good thread on how to do it. It happens that my phone is 7004. Where can I get old ROM in case if something goes bad and I need to re-flash? Is it easy, am I risking to brick and loose my phone?
I just tried to run sample phone app and it runs on the phone. Initially it said that it was revoked by MS, I run dev-unlock one more time and now it works.
GoodDayToDie said:
2) There are lots of apps distributed with source, and most of them will use some native code. You could do a search on this forum for subject lines including the tag "[SOURCE]" and find several (I release source for all my apps). However, I suspect what you'd find most useful is Heathcliff74's guide to WP7 apps that use native code, which is on this forum at http://forum.xda-developers.com/showthread.php?t=1299134. It includes step-by-step instructions.
Click to expand...
Click to collapse
I'll try to search, hope I'll be up and running soon. Too bad WP7 is DOA. They always had much better tools than all these ghetto Symbian/Android/Xcode crapware tools... WTF is wrong with these guys, at the point when they were surpassed at speed of light by newbies iPhone and Android they made some backward steps to cut off most of the devs (but they added all these 500K Silverlight newbie devs...). I'm so disappointed with Android, seems like they hired all these retards who were fired at symbian: same **** tools
I downloaded a few samples and it seems that all of them contain prebuild dll's and all of them are COM dlls or something like that.
What I'd like to find is simple sample that contains src code to native WinMo dll and C# project that it uses.
As far as I know native dll cannot be build with latest tools (am I right?), but I can use cegcc or VS2008 to build native DLL's.
stuff like:
Code:
if (ComBridge.RegisterComDll("ComFileRw.dll", new Guid("EEA7F43B-A32D-4767-9AE7-9E53DA197455")) != 0)
is totally unknown to me. I would really like to avoid to even elarning anything about COM related stuff. I prefer not to mess up with code that isn't portable.
HI mtlgui,
unless Heathcliff finishes his WP7 Root Tools SDK, you don't have any other way to access native c++ code besides using COM. DFT (The DarkForcesTeam) released a firmware loader, that allows you to flash customized unsigned firmware. They were also able to do some native c++ coding with the WM API. However the used firmware for that is not public and it is limited to HTC devices.
Did you already consider to write your application in c#? Mango has now TCP/UDP socket support for outgoing connections. Incoming connections or services running on the phone aren't possible without using native code, at least for the moment.
Hi rudelm,
if the only way to use native is to build COM dll, then I'm OK with that. My app code is old and I'd rather throw my WP7 device to trash can than trying to rewrite my app in C#.
Eventually, down the road while hacking maybe I'll learn c# well enough to do anything with it other than GUI and calling native/COM dlls.
So, just to confirm my understanding. I need to write COM dlls that access native API (socket, filesystem, wavein/waveout etc) and then load these COM dlls and call their functions from C# (or whatever is the closest lang to c/c++ in the WP7 world).
@mtlgui:
You've pretty much got it. A few thoughts, though:
There is a webserver project available on this site. It includes source for its C++ native component (the library is called NativeIO; I can probably send you the source if you can't find it). It exposes registry, filesystem, and TCP server and client sockets to COM. Note that because this library was built for pre-Mango phones, just compiling it and shipping it may not work on Mango phones as many deprecated libraries were removed in Mango and if the DLL contains any references to them, it won't load.
Generally speaking, what you're asking for with TCP/UDP is possible, though you may have to code against the winsock API directly. It sounds like you're doing as little as possible with C#, so even if the Socket API that is available with Mango were sufficient for your app's needs, you wouldn't be using it.
Filesystem access... even if you have read access to your app's install folder (I haven't checked, though you should), you almost certainly won't have write access. Each app does have a writable "isolated storage" though, under \Applications\Data\{GUID}\Data\IsolatedStore\. I've only ever tried writing to it using C# though, so I don't know for sure if it's writable using the native APIs directly (should be, though).
It's probably perfectly OK to write your app as one big native DLL (hell, it *might* work to just change the build type from Application to Library, then rename main() or something like that). You will need to expose the library to COM, but that's easy. You can then write a very simple C#/Silverlight app (see Heathcliff's instructions, or just post the COM interface and soembody could write it for you). All the C# app needs to do is use ComBridge to access the native DLL, and call a "run()" function or something similarly simple.
For what it's worth, C# is very close to a superset of C++, at least on the desktop. The phone version is crippled a little by not allowing the use of pointers - everything has to be done with strongly-typed references instead, which can make network code a little annoying but is otherwise rarely a problem - but with a little experimentation you may find your disdain for C# to be misguided. It's a useful language to know it today's job market, if nothing else.
Why is your phone still on 7004? That's the launch retail build, something like eight months out of date. On the plus side, this means that things like ChevronWP7 Unlocker still work for you, as you found. On the minu side, it means you're putting up with bugs and missing features that you needn't be. Have you tried updating at all? If/when you do update, make sure to back up the restore points that the Zune software generates (they got in %localappdata%\Microsoft\Windows Phone Update\). That way, if you ever need to roll back to 7004, you can do it. Normally, only the most recent restore point is kept.
Flashing ROMs is safe so long as you don't try something like flashing the wrong one for your device. Unless your bootloader is unlocked (only possible on HTC), you can only flash official ROMs anyhow, which saves you from most of the risks. On the other hand, you're already on as old a ROM as you will find, and so long as you keep your restore points, you can return to it any time you want to, easily.
I'm googling now the board to find NativeIO and that webserver app. So far only references to it, but no src code.
I'm ok with isolated read/write access. All I care is persistent fs storage.
My phone is still 7004 because I just bought it so I can do some WP7 development. I don't want to mess up with updates at the moment.
As I understand from another post ComBridge is C#->COM->native c++ dll or any other dll that can be used, right? I'm just learning some COM to learn enough to start actually programming for the phone. I see that I can pass whatever data I want, but I don't seem to be able to see a way to register callbacks so that native/COM could call back to C#
mtlgui said:
I'm googling now the board to find NativeIO and that webserver app. So far only references to it, but no src code.
I'm ok with isolated read/write access. All I care is persistent fs storage.
My phone is still 7004 because I just bought it so I can do some WP7 development. I don't want to mess up with updates at the moment.
As I understand from another post ComBridge is C#->COM->native c++ dll or any other dll that can be used, right? I'm just learning some COM to learn enough to start actually programming for the phone. I see that I can pass whatever data I want, but I don't seem to be able to see a way to register callbacks so that native/COM could call back to C#
Click to expand...
Click to collapse
Basic introduction to native code and COM, including references to more background info: http://forum.xda-developers.com/showthread.php?t=1299134.
Callback from C++ -> COM -> C# can be done. Decompile the WP7 Acrobat Reader app. You'll see how it works.
Ciao,
Heathcliff74

Phonegap discussion/Q&A

I've just started using Phonegap to develop Android apps and found it ridiculously easy (for simple stuff). I've got a background in Windows development for many years, and also a long-standing history of web development, both client and server-side, so for me Phonegap is an answer to many prayers.
I thought this would be an ideal place to share ideas and thrash out problems for anyone that's developing using Phonegap.
If you're not familiar with it but you have web development skills then you really need to look into it...
http://phonegap.com/
I also currently use adobe builder at to build my apps...
https://build.phonegap.com/
That will change when I start integrating my own plugins, using Java and Eclipse, but for now it's awesome as it builds my app for 6 different platforms, including Android, iOS and WP.
I'm new to this so I'm hoping this will be a good place for us to learn together and pick up any tips from each other. There's also the most awesome stack overflow where help can be garnered, as they have a phonegap tag for asking questions. Between there and here we should be covered
I may also use phonegap for my next project. It's either that or Xamarin/Mono. I'd be more comfortable out of the box with the latter, but it's probably more "useful" for me to start prodding HTML5.
Have you taken a look at VSNomad? Lets you work in Visual Studio if you're already familiar with that.
jmbillings said:
I may also use phonegap for my next project. It's either that or Xamarin/Mono. I'd be more comfortable out of the box with the latter, but it's probably more "useful" for me to start prodding HTML5.
Have you taken a look at VSNomad? Lets you work in Visual Studio if you're already familiar with that.
Click to expand...
Click to collapse
I just had a look at VSNomad and it does look very interesting, but it's damn pricey! I'm certainly not used to paying subscription costs to develop software.
Some of the tools and tech I use to develop phonegap app
APTANA 3
GIT GUI
bootstrap.js
ADT
Dreamweaver CS 6
AppLaud - Mobile Developer Solutions
Best of all and universal tools to develop.
some other useful tools with phonegap
I usually develop applications with PhoneGap using the following tools:
Eclipse
ant scripts for packaging and javascript compression
jasmine for javascript module testing
karma for test in real time
I found very useful to use the last tool for testing on multiple browsers and mobile emulators because it allows to detect possible errors in real-time.
salamanred said:
I usually develop applications with PhoneGap using the following tools:
Eclipse
ant scripts for packaging and javascript compression
jasmine for javascript module testing
karma for test in real time
I found very useful to use the last tool for testing on multiple browsers and mobile emulators because it allows to detect possible errors in real-time.
Click to expand...
Click to collapse
Karma sounds great for compatibility and debugging. I searched online and there are tons of results. Could you share more info so I can find it?
I currently use Eclipse with the Phonegap plugin and Firefox for basic debugging until I near final production.

Any way to port Android apps to the Windows Phone platform

Hello XDA,
I have developed an app called Ring My Droid (Scan the QR-Code attached with this post).
Currently this app is only available for the Android platform through the Google Play Store.
I am learning to develop apps for the Windows Phone platform too. But, then I came across this section of the XDA Forum and I am interested to know if anyone out here is aware of a tool or a website or blog providing tutorials or a methodology for porting my existing application to the Windows Phone platform?
This may be a noob question, but I am very new to programming for Windows Phone so bear with me..
Any help would be greatly appreciated!
Thanks.
prognosis: serious
I don't know of any frameworks off the top of my head, but I can infer some of the answers based on experience in other platforms. And those answers are not very promising, unfortunately.
1) If you want your app to be cross-platform, you need to design it as such from inception. Otherwise you're in for a lot of work no matter how you slice it.
2) Because WP and Android use different languages for native apps, you have a big problem in just getting your source code targeted to both platforms. If your codebase is already in Java, you'll need a Java -> C#/VB/C++ translator to make it work. I'm not sure that a product like that exists. If you had started with, say, C#, you could utilize something like Xamarin to target Android and WP at the same time, but like I said I'm not aware of anything similar for Java->C#.
3) If your app is written in HTML 5, then you could adapt it to work on WP8 with very little extra effort. But in that case I bet you would have already known that you're cross-platform-compatible and wouldn't ask this question to begin with.
4) If you're resigned to rewriting your app while maintaining its core design the same, then the basic methodology is as follows:
a) refactor your app into well-defined, loosely coupled components.
b) factor away all Android specific APIs into adapter classes and have all "core" functionality written in terms of those adapters
c) port your core classes to a different platform (WP) in a WP-supported language, such as C#. This would be a straight, mechanical but nevertheless manual rewrite.
d) reimplement your missing adapters on WP to take advantage of WP APIs, while leaving internal-facing interfaces the same, so your core classes just work.
e) all of this makes sense only if there is enough complex core functionality to warrant the rearchitecture + translation. If your app is little more than glue shuffling data between external data sources, then all of this is not worth it, and a compete rewrite is the only way to go (sorry I don't have a QR reader readily available right now so I can't check your app directly).

Where to begin for making useful apps?

Hey all
I have been building sites for a long time and I am pretty confident in modern frameworks like Bootstrap etc. I have played about with JQuery Mobile and UI. I know how to make mobile sites from a front end side. I understand that I could upload my site to PhoneGap and turn it into a native app.
However, I would love to know how to make useful, dynamic apps. For a very basic example, developing an app to find pizza shops in the local area.
I know how to make mobile sites easily enough. I just don't really understand how to link that up with APIs etc , or even where to begin. If someone could point me in the right direction for where I could experiment with this I would be really grateful .
I have read some API info, but I don't know how to use it at all.
I'd start with building a small app that uses some public REST api. Such as a reddit or craigslist client. This will let you learn how REST APIs work in general. Once you get the hang of it, you can build your own REST APIs.
Just pick some RESTful API to get data and then process it some way. For example you may try LinkedIn API (can't post links, lol - just google "linkedin rest api" and you'll get it).
Probably the most useful quick exercise for you would be to check the documentation of an easier API, get a tool which can be used for REST testing and just play around with it. For this purpose, I'm using Paw on my Mac, which is a really friendly tool, but after reaching a basic level of understanding how things work you can do the same with cURL, in Python or whatever you fancy. I bet there are good web tools for this purpose as well, I just never had to use any.

Categories

Resources