[Q] Integrating GPS, Camera, and Custom Data - Android Software Development

We have a large ambition of using Android phones or tablets to help us track equipment inventory. We need to track both equipment that we currently own (sitting in one or our two yards) as well as equipment that is available for purchase.
We currently have an Access database that handles these records as well as handling linking to the pictures stored in structured directories identified by stock number.
So here's the idea we have:
A user would walk up to a given piece of machinery and enter the stock number (stock numbers are painted on the equipment). This would create a record (either text or database on the Android device) and would add GPS coordinates to the record. The user could go on to take pictures of the item that should be linked to the stock number entered at the beginning. The user would then click a button to say that he's finished.
I'm seeing numerous problems with this and hoping this community can help me think through this.
1) It would be nice if the device could have a small copy of our inventory database so that the user's entry could be validated against our existing records.
2) Should we try to connect to the live Access database (if/when possible, won't always work) or would it be better to employ some type of upload/synchronization?
3) Is it even possible to program what I'm asking for? I did see code online to control the camera and it looks like you could easily choose (in the code) where to save the pictures. I'm assuming we would create folders for each stock number and place the pictures inside with names like 53595-001.jpg. Any ideas on how or if this will work and how much programming it's going to take?
4) I'm an experienced Windows programmer using VBA, ASP/VBScript, and some VB6. Would I be better off trying to do this with a Windows Mobile device? I don't have any experience programming in Android/Java or other related languages.

Related

Dial PPC from Outlook

I have been searching the web for years trying to find the solution to what I would consider is a very simple requirement:
From Outlook on the PC, right click on a contact and dial to a connected Pocket PC via Activesync.
Now, either I am alone in this world, or my search capabilities are flawed. This is a function/capability I used to have with my old Sony-Ericsson & I am missing it badly - yes, I know there is a Powertool that provides you with a "window" to your PPC, but I have found that this is somewhat flakey, doesnt like Landscape mode and frequenly freezes the PPC.
Further, I have enhanced my Access application to perform the dialup via the CPROG.exe, what I am after is the same or similar functionality direct from Outlook... please help!
Is there anyone out there that can help me?
looking for the same
it seems we both live in the same world
Come on guys, are you really telling me there isn't anything out there at all?
err so remind me why one would want to do this other than to write some annoying dialer program?
OK, rather simple, really:
Working from Desktop PC, with PPC connected via ActiveSync and sitting in a cradle - by definition, this makes it a pain to access the PPC.
Current Scenario:
1. PC has Outlook open, search for a contact that you wish to converse with
2. Open Contact
3. Look at number
4. Lean over desk, usually spilling coffee, or unintentionally moving to another website
5. Try to use Stylus to dial number (or use Intellidialer to access the same contact you have in Outlook)
6. Make call
7. Hope you have put in the right number
8. Call goes to voicemail, throw phone against wall
All in all, a rather cumbersome scenario.
Preferred Scenario:
1. PC has Outlook open, search for a contact that you wish to converse with
2. Open Contact, or right click on Contact
3. Select number to dial
4. "Magical programme" sends dial request to PPC
5. Make call
6. Call answered, sale made, kids go to expensive Private School and Wife loves you forever
Makes sense now?
yep so get one of those programs to control your phone from the desktop?
sure its not what you really want to do but it will do the job
st3v3 said:
yep so get one of those programs to control your phone from the desktop?
sure its not what you really want to do but it will do the job
Click to expand...
Click to collapse
Did you ever read his first post?
yeah for about 4 or 5 seconds, gave pity and responded for the simple fact no one else did and thought i would show some interest.
at least some of us make an attempt eh helterskelter
Thanks for your pity, but I would prefer to know what, if anything, is out there. Obviously, I was mistaken in believing this was the font of all wisdom and exciting development in the PPC world. I truly cant believe that nobody has thought to put this together. Funnily enough, there is one that does this via Bluetooth, but as the XDA Mini wont allow multiple Bluetooth connections, I have been "forced" to find out if there is anyone clever enough to make this happen :sigh:
Hi!
I miss this funtion in windows mobile. This is the only reason why I consider to go back to my old Ericsson.
A little bit strange that it works with other software but not with Microsofts own?
Using .net you might be able to write an app (server) that listens on an open port on the PPC for coms from the active sync pc. When a certial string is sent down this port DIAL(123456789) the app calls the dial command in .net framework.
Maby its time to bite the bullet and code it.
Im having to with another app
No need for a PPC app, as you can already do this from the desktop - using:
rapistart.exe "cprog.exe -n -url tel:numbertocall"
from within any ap. I have done this from my Access program, I was looking to see if anyone had done this for Outlook as a plugin for the Desktop, or indeed some form of TSR on the PC that will take a hotkey and use the above for a highlighted number (yes, I know that I am now officially in fairyland).
mlk said:
No need for a PPC app, as you can already do this from the desktop - using:
rapistart.exe "cprog.exe -n -url tel:numbertocall"
from within any ap. I have done this from my Access program, I was looking to see if anyone had done this for Outlook as a plugin for the Desktop, or indeed some form of TSR on the PC that will take a hotkey and use the above for a highlighted number (yes, I know that I am now officially in fairyland).
Click to expand...
Click to collapse
Nope this can then be done using windows scripting host cause its the outlook that you need to automate not he PPC.
See the 3rd item on this page.
http://www.cooperstown.net/tips/outlook-address.html
It should be able to help you out just make a custom toolbar button in outlook to call this piece of code and your away laughing.
EDIT:
Where did you fiind the info on cprog. Is there any way it could help with this
Unfortunately, I cant remember where I found the information on Cprog - only thing I have is the "How to call a number".. tried for some time to find various parameters to no avail... not too sure if this will help with your problem.
OK Guys, I finally bit the bullet - thanks Shaun for the "hint" - and coded a Macro to perform this.
It may be a bit clunky and as a "non-developer" I don't have the requisite nous nor software to distribute this as a plugin. For this reason, I have provided this as completely open (as far as I can tell), so if anyone wants to take this further, I hope I have started you on the track and that you wont forget the initial starter!
For those of you that wish to install - you will need to access your \Documents and Settings\<username>\Application Data\Microsoft\Outlook folder and extract the zipped file. My recommendation is that you save the existing one first, just in case you have written a bunch of Macros - wouldn't want to get any nasty surprises here - remember, Outlook only has one Macro bucket and this file is it!
Once you have installed and either provided your own Digital Certificate, or have an appropriate level Security within Outlook to allow this to run, simply add the Macro "Dial2PPC.Dialit" to a toolbar both in Outlook (that comes up in Contacts preferably) and in the Contact Form itself (use "Customise" as you would in any other Office application to facilitate this).
From here, it is as simple as selecting the Contact from your contact list and clicking on the Macro button you have setup - then follow the instructions, make sure your PPC is connected & Dial away!
Please note that you will need to have installed RapiStart from the Windows Mobile Power Toys and that I make no assertions that this is bug free, so use wisely - although, I am pretty sure I have most of the bugs out.
Again, this is provided open & free, so if you make an enhancement, please share it with the rest of us!
Hope this solves the "issue" for you guys as it has done for me!
DialViaActiveSync
mlk – thanks very much for your macro. I’ve taken the liberty of rewriting quite a bit of it (everything other than the part which communicates with the device, really), and have made it available under the GPL v2.0, in order to preserve its “Free” status.
In terms of changes, as I say, I’ve rewritten most of the back-end functionality. In particular:
1.) Adding items to the listbox – this now only shows fields which have a valid phone number, so there are no empty spaces
2.) Dynamic resizing of the form
3.) Form and “Dial” button captions show the name of the contact
4.) Where a contact has no valid phone number, a dialogue to this effect is shown
5.) You need to select number from the listbox before the “Dial” button is available
6.) You can double-click on a number in the listbox to dial it
7.) General tidy-up of some of the variable names, and removed a couple of unused variables
Installing my version:
I’ve exported the relevant files from the Project, so there is no need to overwrite the existing Project file – just open Visual Basic Editor (Tools / Macro in Outlook) and select “Import” and the browse to the relevant folder.
I'm a lurker rather than a poster on here, but, any questions, please do let me know.
Cheers,
Neil
Administrator
WindowsMobile247.com
[email protected]
Neil,
Champion stuff mate - I have always said it is best to wait for Version 2! Just one question: The ".frx" file, what is that for?
Mark.
It's the binary file for the VB .frm - it's not something you manually import, but it's necessary for the display of the form.
BTW- I've changed the contents of the .zip file for download- realised that I'd left in a line (an extra ResetState call) which stopped the whole thing from working - new version uploaded (same name) should be fine.
Cheers,
Neil
Administrator
WindowsMobile247.com
[email protected]
Thanks for this, maybe should change my mantra to: Wait for V2.1?
P.S. Thanks for coming out of the lurk!
Nah- v2 was fine... if I hadn't been meddling with it...
Managed to put the reset call before the RAPI argument, which, of course, wiped out the phone number it was trying to dial... Stupid, stupid, stupid -embarrassing, but at least easy to fix.
I guess that the next step is to try and implement SMS via ActiveSync - not sure if cprog.exe handles this, though, so it could be rather more complicated...

[APP][PRJ] MyDVD Collection - a Barcorama companion

Hey guys,
I'm delving into PPC development for the first time (have done other development in .NET but never for PPC). I'm creating an application called MyDVD Collection. It will be a handheld database for keeping track of DVDs/CDs/Console games. Now, what's going to make mine a little different than others like this is that I have designed it to work in conjunction w/ Barcorama. Basically, you'll be able to set this program as the external executable which Barcorama passes its scanned barcode to. It will then check your collection to see if you already own it, give you the ability to add it if it does not exist, and will eventually pull information from the Internet about that item and auto fill (as soon as I find a reliable way to do that).
So far, I have the basic database structure defined and have the screen built to view the items in the database, as well as a way to filter that view. Next is to build the entry form for adding items, and a basic search function. I should have an alpha version ready for testing soon. If anyone is interested in testing, please let me know.

[Q] Some questions about developing

Hi there, i'm new to developing Android Apps, so i have some questions.
1. I know that always have a chance of breaking security on computer world
2. Whats the most secure method to generate a UniqueID? because my app needs to work on china tablets, original tablets, cellphones, hacked phones, etc. I need this for verification of paid things (wait, xda will have a free version ;o)
3. There is any way to encript the program without affecting the performance too much? I'm new to java and comming from C++, so there is any compaction, encrypt, etc? Because if anybody knows the NEW IDA will come with android support.
4. There is any HTML parser on java? Because i need to fetch a html page with httpclient and after i need to parse it to get content... the contect is dynamic (html table with N rows), so i need a parser... or there is any other way?
5. I know how to make a tabed interface, but how is the best way to know the app state? Like it:
App Start -> User Already Logged (Save on SQLite?) ?
Yes = Display app interface and unlock config menu (here is the tabed interface)
No = Display login interface and lock config menu (here is just a relative layout with login bnts)
Thanks in advance.
1: Number one is not a question.
2: Do you mean most secure possible, or most secure practical? Those concerns should be addressed. Most secure would be to have a courier bring the user one-time-pads for every session, but that's not very practical. That said, what is the nature of your ID? Depending on what you are using it for, I would think a few randomly generated bits from some user entered entropy (like touchpad event timing) should suffice.
3: Again, what is the nature of your need for encryption? Do you want to keep it from being decompiled and analysed? If so, you're pretty much out of luck as there is always a way for a dedicated hacker to disassemble the code that does the decryption unless you use some sort of challenge-handshaking algorithm to load the keys at runtime for every session from some secure source but that requires connectivity and user interaction which necessarily complicates the process.
4: The XML parsers available as part of the Android SDK do a pretty good job of parsing HTML if it is clean compliant HTM> See, i.e. the Sax classes:
http://developer.android.com/reference/org/xml/sax/package-summary.html
5: You can use the API included preference classes to save state between sessions:
http://developer.android.com/reference/android/preference/package-summary.html
Note: for general application cryptography information, you still can't beat the venerated Applied Cryptography by Bruce Schneier.
Thanks for the answers.
I just wanna know how the most used programs like rom manager, power amp, titanium backup and whatsapp protect their paid versions, and how they validate it.
Another question that leaves on it is that some programs have a dedicated paid version, and some have just a key that you download and unlock the free version, how they did it? They just check if key is installed assuming that it was downloaded from market?
My uses is just for two reasons:
1.) protect my app as possible from newbie crackers
2.) transmit user information with a secure method to my server. Its important because my app will be used on open networks.
As for UniqueID generating, i just wanna a "unique world global super id" for each user of my app, and it will be installed on cellphones, tablets without phone, tv with android, and all of this.
Also, what to do if html is not well formated?

Android indoor map generates different path from point a to b depending on user input

Android indoor map using image generates different path from point a to b depending on destination's input (No use of indoor navigation technologies)
I'm working on an android app for my final year project and I'm unsure how to solve this problem. I would like some advices to get me started in the right direction.
The project is to develop an android app to output a direction path from point a to point b on an image representing a two dimensional indoor map. The direction displayed will be depending on the user's input (destination). The starting point will always be the same location on the image. Once the user select a specific object, the app should find its location on the map using a database and then draw the direction's path from Point "a" to point "b".
I do not want to use any indoor navigation technology for this app. The location of each object on the map should be predefined and stored in a database.
The part which I am really unsure about is how to do the following for and android app. --> How to predefine points on an image and how to use these predefined data to display the path to take in the image representing the indoor map. I have been advised to use SVG (Scalable Vector Graphics), I have found androidVG to use SVG with android but I haven't found much information on it.
I am currently clueless regarding what language and techniques to use in order to perform the above feature on android.
Questions:
1) What general advice would you give me on how to effectively tackle this problem from the information I've provided?
2) Was I correctly advised when I have been given SVG as one of the language to use for the development of this app? If I was, would anybody have any more information on using SVG for android to provide me with?
3) IF there would be a better way to solve this problem which language should be used?
I really appreciate all the help provided in this community. Hopefully I have been clear enough, hoping to have my questions answered.
Thank you!

C++: open file for writing in the LocalStorage

Hi guys, could you tell me how to open file for writing in the phone app LocalStorage for the non-unlocked handset (regular app for store)?
Code below doesn't work
Code:
FILE *tmp;
auto tmpPath = Windows::Storage::ApplicationData::Current->LocalFolder->Path + "\\tmp.txt";
auto tmpErr = _wfopen_s(&tmp, tmpPath->Data(), L"w");
Any suggestions?
Try looking though msdn articles. I found it somewhere in there. But I have forgotten it now.
Sent from Board Express on my Nokia Lumia 1020. Best phone ever!!
Note to noobs: DON'T PM ME WITH QUESTIONS. POST IN THE FORUMS. THAT'S WHAT THEY ARE HERE FOR!
@wcomhelp, please keep your rtfm advices for yourself, OK? I'm not a noob and of course I've searched msdn, google, codeplex, github etc. and so on before posting here. If you don't know how, much better be silent (like others who read this post but have no idea what I'm talking about)
I've tried a few possible methods including ugly "MS-way" with task & lambda syntax (see below) but nothing worked as it should be (code below works if no file exist and fails if file already exist - CreationCollisionOption::ReplaceExisting options is not worked/not implemented/buggy/billgates_knows_only ).
Code:
auto folder = Windows::Storage::ApplicationData::Current->LocalFolder;
Concurrency::task<Windows::Storage::StorageFile^> createFileOp(
folder->CreateFileAsync(CONFIG_FILE_NAME, Windows::Storage::CreationCollisionOption::ReplaceExisting));
createFileOp.then([=](Windows::Storage::StorageFile^ file)
{
return file->OpenAsync(Windows::Storage::FileAccessMode::ReadWrite);
})
.then([=](Windows::Storage::Streams::IRandomAccessStream^ stream)
{
auto outputStream = stream->GetOutputStreamAt(0);
auto dataWriter = ref new Windows::Storage::Streams::DataWriter(outputStream);
// data save code skipped
return dataWriter->StoreAsync();
})
.wait();
BTW, I've used workaround, to save ported C++ app data to the LocalSettings instead of text file (as it was in original code).
"Doesn't work" doesn't give us a lot to go on, troubleshooting-wise. Can you tell us what error you get?
Only thing I see in the code that looks a little weird is that the
Code:
"\\tmp.txt"
part isn't explicitly a wide-character string, but I'd expect string concatenation to take care of that.
Also, out of curiosity, why libc functions instead of Win32? Obviously, the code you're writing here isn't intended for much portability...
@GoodDayToDie, there is no error code at all - standard POSIX functions returns NULL FILE, the ::GetLastError() also return 0.
I'm porting old C-style app to WinRT platform and don't care about portability (but the first post code - just a simplified example, nothing more).
POSIX (libc) functions works pretty well for reading only but not for writing - that's the problem...
As I said before, I resolved my issue by workaround but still curious why the POSIX calls fails for file writing in the app storage.
buuuuuuuuuuuuuuuuh
No need for lambdas
https://paoloseverini.wordpress.com/2014/04/22/async-await-in-c/
You may also want to rethink your strategy
You can't create files at arbitrary locations, so your method is kinda redundant. All the locations you are allowed to create and read files to/from are available through KnowFolders and ApplicationData classes. These return StorageFolders which in turn can create files with CreateFileAsync (used for both creating and opening existing files) and get files with GetFilesAsync ( I recommend against this one though) and similar methods.
@mcosmin222, could you please re-read my posts one more time? I'm not trying to create files at "arbitrary locations"; I wanna create/write simple text file at the app's local storage (which one should be available for reading/writing). And the problem not in the lambdas or task usage (yes, it looks ugly but it works as it supposed to be).
Could you provide a working example instead of words? And I'll be glad to say you "thanks a lot"; can't say now...
sensboston said:
@mcosmin222, could you please re-read my posts one more time? I'm not trying to create files at "arbitrary locations"; I wanna create/write simple text file at the app's local storage (which one should be available for reading/writing). And the main problem not in the task (async execution).
Could you provide a working example instead of words? And I'll be glad to say you "thanks a lot"; can't say now...
Click to expand...
Click to collapse
Sure, just gimmie a few hours till I can get near a compiler that is capable of doing that
Of course, no rush at all, take your time. It's not a showstopper for me now (actually, my workaround with AppSettings is more preferable way - at least for universal app and roaming settings) but the issue still has an "academic interest" and maybe will be useful in the next projects for porting old C/C++ code to WinRT.
sensboston said:
Of course, no rush at all, take your time. It's not a showstopper for me now (actually, my workaround with AppSettings is more preferable way - at least for universal app and roaming settings) but the issue still has an "academic interest" and maybe will be useful in the next projects for porting old C/C++ code to WinRT.
Click to expand...
Click to collapse
hi
in vs 2015
#include <pplawait.h>
Something of the like should work
Code:
WriteSomeFile() __resumable
{
auto local = ApplicationData::Current->LocalFolder;
auto file = __await local->CreateFileAsync("some file", CreationCollisionOption::eek:penIfExists);
__await FileIO::WriteTextAsync(file, "this is some text");
}
However, as of right now, in VS 2015 RC, you have a host of limitations when dealing with this, but I do not believe this will be of any issue to you.
Code:
Cannot use Windows Runtime (WinRT) types in the signature of resumable function and resumable function cannot be a member function in a WinRT class. (This is fixed, but didn't make it in time for RC release)
We may give a wrong diagnostic if return statement appears in resumable function prior to seeing an await expression or yield statement. (Workaround: restructure your code so that the first return happens after yield or await)
Compiling code with resumable functions may result in compilation errors or bad codegen if compiled with /ZI flag (Edit and Continue debugging)
Parameters of a resumable function may not be visible while debugging
Please see this link for additional details
http://blogs.msdn.com/b/vcblog/archive/2015/04/29/more-about-resumable-functions-in-c.aspx
you should also note that this works with native, standard C++ types.
@mcosmin222, looks like unbuffered writing works (i.e. without streams) fine but it still not an answer for my initial question
I'm curious why the standard POSIX libc writing operations are not working on the app's local storage (but reading from files works fine). Actually, it's all about porting old C/C++ code for WinRT; of course for the new app it's not a problem but re-writing old code to FileIO should be a huge pain in the ass. What I did: I've "mechanically" changed all libc formatted outputs from file to string, and use LocalSettings class (actually it's XML file) to store that string (I'm planning also change LocalSettings to RoamingSettings, to provide settings consistency between WP & desktop app).
P.S. <pplawait.h> is not available in my VS 2015 (release pro version) so I've tested by using lambda pattern.
OK, first things first, LIBC != POSIX! The POSIX way to do this would be to call the open() function and get back an int as an "fd" (file descriptor), which is of course not implemented on Windows Phone because Windows Phone is not a POSIX platform (you might find the Windows compatibility functions _open() and _wopen(), but I doubt it). You are attempting to use the standard C library functions, which are portable but implement kind of a lowest common denominator of functionality and are generally slightly slower than native APIs because they go through a portability wrapper.
Second, sorry to be all RTFM on you but you should really Read The Manual (or manpage, or, since this is Windows, the MSDN page)! Libc APIs set errno (include errno.h) and use different error values than Windows system error codes (or HRESULT codes, or NTSTATUS codes, or...). Error reporting in C is a mess. If you were calling CreateFile(), you would check GetLastError(), but since you're calling _wfopen(), you check errno (not a function).
@GoodDayToDie, _wfopen_s returns 0 (i.e. "no error") but tmp pointer receives also 0 (NULL) Could you explain why libc file functions are working for reading (at the app installation & local data folders of course) but not for writing? Any logical ("msdn based") explanation? Or you just... don't know, heh?
sensboston said:
@GoodDayToDie, _wfopen_s returns 0 (i.e. "no error") but tmp pointer receives also 0 (NULL) Could you explain why libc file functions are working for reading (at the app installation & local data folders of course) but not for writing? Any logical ("msdn based") explanation? Or you just... don't know, heh?
Click to expand...
Click to collapse
LIBC functions will most likely work just in debug mode. The moment you try to publish the app it will fail. You can do lots of crazy stuff on your developer device with basic C functions, but if you try publishing, it won't pass the marketplace verification.
Most C APIs are simply not supported, since they do not comply with the sandbox environment of the Windows Runtime.
The code I gave you is tested with VS 2015 RC. You should be able to include <pplawait.h> just fine, if you are targeting toolchains newer than November 2013.
mcosmin222 said:
The moment you try to publish the app it will fail. You can do lots of crazy stuff on your developer device with basic C functions, but if you try publishing, it won't pass the marketplace verification.
Click to expand...
Click to collapse
Hmm... Are you sure or it's just your assumption? My app is still under development but (just for test!) I've made store app package for WP and it passed local store verification I also uploaded package to the store (via browser) and it also passed. I don't have time to create all tiles and fill all fields to complete beta-submission (actually, I don't know how to mark app as beta in the new dashboard) but for me it looks like app don't have any problem and will pass store certification easily. And you may be sure - it uses A LOT of libc calls 'cause originally it was written for Linux (or kind of UX system)
sensboston said:
Hmm... Are you sure or it's just your assumption? My app is still under development but (just for test!) I've made store app package for WP and it passed local store verification I also uploaded package to the store (via browser) and it also passed. I don't have time to create all tiles and fill all fields to complete beta-submission (actually, I don't know how to mark app as beta in the new dashboard) but for me it looks like app don't have any problem and will pass store certification easily. And you may be sure - it uses A LOT of libc calls 'cause originally it was written for Linux (or kind of UX system)
Click to expand...
Click to collapse
Once usage reports get up to microsoft, you will be given a notice to fix the offending API (happened to be once). You are much better off using the platform specific tools: not only they are much faster, they are also much safer and you won't have problems later on.
You might get away with reading stuff (since reading is not that harmful), but you should be using the winRT APIs each time they are available.
Simply uploading your app to the marketplace just reruns the local tests in their cloud servers: once you submit the actual app (not beta, not tests) for consumers, it will be much more aggressively checked. This is because the store allows specific scenarios for distributing apps in close circles that may break the usual validation rules.
@mcosmin222, one more time: is it your assumptions or personal experience? I don't know how many apps you have in store (I do have a lot) but I never heard that you said. I've used C++ libraries with WP hacks in some of published apps but never had any problem with "aggressive checks". What I know: if you are using some "prohibited" calls, your app will not pass uploading to the store (uploading, not a certification).
P.S. I'll send you personally a link when I publish release Hope, you'll like it
sensboston said:
@mcosmin222, one more time: is it your assumptions or personal experience? I don't know how many apps you have in store (I do have a lot) but I never heard that you said. I've used C++ libraries with WP hacks in some of published apps but never had any problem with "aggressive checks". What I know: if you are using some "prohibited" calls, your app will not pass uploading to the store (uploading, not a certification).
P.S. I'll send you personally a link when I publish release Hope, you'll like it
Click to expand...
Click to collapse
By "hacking" you mean recompiling the code to fit the windows phone toolchain? if so, then you shouldn't have to worry about too many things.
but even so, calling stuff like fopen in locations other than local storage will get your app banned. Even if it makes past the first publication, you can get noticed weeks later or even months (yes, it did happen to me personally).
In most cases, calling C APIs that can potentially break the sandbox (like opening a file in doc library with fopen) will always fail the marketplace verification, eventually. If it hasn't happened to you yet, then you may have not been using such APIs.
No, my C++ code is not accessing other than approved locations but the app has a lot of libс (and of course other C/C++ libs) calls; I'm 99.9% sure it's legitimate and will be not a source of any problem. Otherwise what is the advantages of having C++ compiler?!
As far as I know, just some of API's are prohibited but you will notice it right after local store compatibility test run...
As for "hacks" I mean usage of undocumented ShellChromeAPI calls (including loading hack).
P.S. I've found why <pplawait.h> header is missing. Initially I've created solution with the 12.0 toolset but now I can't (or don't know how to) change it to 14. However creating the new empty universal solution in VS 2015 also gives me toolset 12 by default. What is the toolset 14 for? Windows 10?
sensboston said:
No, my C++ code is not accessing other than approved locations but the app has a lot of libс (and of course other C/C++ libs) calls; I'm 99.9% sure it's legitimate and will be not a source of any problem. Otherwise what is the advantages of having C++ compiler?!
As far as I know, just some of API's are prohibited but you will notice it right after local store compatibility test run...
As for "hacks" I mean usage of undocumented ShellChromeAPI calls (including loading hack).
P.S. I've found why <pplawait.h> header is missing. Initially I've created solution with the 12.0 toolset but now I can't (or don't know how to) change it to 14. However creating the new empty universal solution in VS 2015 also gives me toolset 12 by default. What is the toolset 14 for? Windows 10?
Click to expand...
Click to collapse
The advantage of C++ is the obvious versatility: the standard C++ APIs will work fine for you as long as you stay inside the sandbox (this means you can't access files even in locations that are outside of sandbox but you have permission to them, such as music library). You can use most classic C/C++ libraries without issues as long as you do the interface with the runtime broker yourself. That means using windows runtime APIs instead of classic C APIs when dealing with stuff such as file access, for example. This is a pretty extensive topic and It is rather difficult to explain it all with 100% accuracy, especially when there is lots of docs running around.
You also get deterministic memory management, which is huge in specific scenarios.
Long story short
You will be fine with standard C/C++ when using
any in-memory functions supported by the compiler (you can manipulate data types, string, mutex, etc).
File IO in isolated storage only (applicationData folder)
Threads (although you are better off using threadpool or the like, it is much easier and cleaner). You can also use futures, and std::this_thread.
You will have to use winRT replacement
File system access in any other location than application data (you must use the windows::storage APIs)
sockets, internet access and the like.
any hardware related thing: music&video playerback must be interfaced through winRT (although the underlying decoders can be classic C/C++), messing around with the device sensors.
Retrieving system properties (internet connection state etc)
cross process communications
communicating with other apps
There are also win32 equivalents
mutex, threading, fileIO (isolated storage only)
Media playback with custom rendering pipeline.
Basically, winRT functions as an abstraction layer between the hardware and your code. You can use classic C++ up to the point where you need to interact with the system in any way. At that point, system interaction must be done with winRT. This way, microsoft ensures a higher degree of stability and security for devices.
check this link out for more information on the toolchains. You should be able to use this in VS 2013 as well with windows 8 (this is a compiler feature, has nothing to do with supported platform)
https://paoloseverini.wordpress.com/2014/04/22/async-await-in-c/

Categories

Resources