Doki, one of the biggest Adobe Air for iOS projects, released yesterday
I am proud to present one of the biggest Adobe Air for iOS projects, that was released yesterday. Amazingly, the project completed in less that a year. Doki is a unique modern method of learning the basics of a foreign foreign language without the use of grammar and writing. Through colourful animated scenarios and characters, Doki brings to life a number of languages through real life situations, humour and interactive exercises. Exclusively designed for the iPad 2, New iPad, and iPhone 4S, Doki teaches five different languages: English, French, German, Iberian Spanish and Latin American Spanish. Each language has two levels: Doki and Doki Further. Both levels have been designed to teach the basics of these languages so that you can communicate with confidence. In Doki, a beginner’s level, the learner navigates through 14 chapters or ‘places’ in Doki City, listens and repeats the phrases and then solves simple interactive exercises. Each chapter is divided into lessons (a total of 51) that present key words and phrases in English and the other languages Doki covers. Doki Further, a more advanced beginner’s level, consists of 9 chapters with 28 lessons that take place in Doki City.
The development of Doki is based entirely on Adobe Air . The result is spectacular. With a development team that consisted of 5 programmers, 2 designers, 3 language specialists, one assistant programmer, plus a team of 4 testers, the gigantic project of 14 apps was completed in less than a year, resulting in very low development costs!
Please visit http://www.dokispeak.com for further details.
Pretty cool.
Similar Messages
-
How to record a time-limited video with Adobe AIR for iOS
I am trying to record a time-limited video with Adobe AIR for iOS.
For example, I want to implement the following function. Start a one-minute timer before launching CameraUI to record video. When the timeout event happens after one minute, stop recording video, close the CameraUI view and obtain the video data so far.
I have several questions related to that.
1. How to stop recording video from outside the CameraUI view(in this case, from the timeout event handler) and then close the CemeraUI view? As far as I know, to close the CameraUI view, the only way is to press the [Use Video] button or the [Cancel] button from inside the CameraUI view. Is it possible to close it from outside?
2. Even if the first problem mentioned above is solved, then how can I get the video data so far(in this case, the video data before the timeout). I know that normally we can get a MediaPromise object from MediaEvent parameter of the complete handler, and read the video data from the MediaPromise object. But obviously in this case, we can not access the MediaPromise object just because the complete handler itself will not be executed since the [Use Video] button is not pressed.
3. Is it possible to add a stopwatch to show possible remaining recording time when CameraUI view is open? It seems that the CameraUI automatically uses the full screen of iOS device(in my case, iPad) and there is no extra space to show the stopwatch.
Are there any solutions or workarounds about the three problem above? I really appreciate it if anyone has any idea about this. Thanks in advance.You'd have more control by using the Camera object, showing the camera on a video object inside a Sprite, and capturing that. Then you could put whatever graphics alongside it on the stage.. I've used FlashyWrappers in a test to capture the video to the library. It took some work, but the test worked well...
Flash/AIR record videos of your apps and games: Rainbow Creatures -
Does Adobe AIR for iOS support APNs?
Does Adobe AIR for iOS support the Apple Push Notification Service (APNs)?
for more information on APNs see:
http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/Remote NotificationsPG/ApplePushService/ApplePushService.htmlIt is exactly the same.
Do I need to add the mobileprovision in any step of the resigning process?
Inside the unpacjed ipa, i've fund a Info.plist.
This seems to be the plist file generated from adt.
Do I need to integrate my entitlement with the original one?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleAllowMixedLocalizations</key>
<true/>
<key>CFBundleVersion</key>
<string>0.0.0</string>
<key>CFBundleShortVersionString</key>
<string>0.0.0</string>
<key>CFBundleIdentifier</key>
<string>XXXXXXXX</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleExecutable</key>
<string>iBatteryExample</string>
<key>CFBundleDisplayName</key>
<string>iBatteryExample</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>DTCompiler</key>
<string>4.2</string>
<key>DTPlatformBuild</key>
<string>8C134</string>
<key>DTPlatformName</key>
<string>iphoneos</string>
<key>DTPlatformVersion</key>
<string>4.2 Seed 2</string>
<key>DTSDKName</key>
<string>iphoneos4.2</string>
<key>DTXcode</key>
<string>0325</string>
<key>DTXcodeBuild</key>
<string>10M2423</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>MinimumOSVersion</key>
<string>4.0</string>
<key>NSMainNibFile</key>
<string>MainWindow</string>
<key>NSMainNibFile~ipad</key>
<string>MainWindow-iPad</string>
<key>CFBundleResourceSpecification</key>
<string>ResourceRules.plist</string>
<key>UIStatusBarHidden</key>
<false/>
<key>renderMode</key>
<string>auto</string>
<key>CTRequestedDisplayResolution</key>
<string>high</string>
<key>DebugMode</key>
<false/>
<key>CTSoftKeyboardBehavior</key>
<string>none</string>
<key>CTNamespaceURI</key>
<string>http://ns.adobe.com/air/application/3.0</string>
<key>CTAutoOrients</key>
<true/>
<key>CTInitialWindowTitle</key>
<string>iBatteryExample</string>
<key>CTInitialWindowContent</key>
<string>xxxxx.app/xxxxxxxx.swf</string>
<key>CTMaxSWFMajorVersion</key>
<string>13</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>iPhoneOS</string>
</array>
<key>UIDeviceFamily</key>
<array>
<string>1</string>
<string>2</string>
</array>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.aps-environment</key>
<string>development</string>
<key>get-task-allow</key>
<true/>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
<string>opengles-2</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
</array>
<key>Extensions</key>
<array>
<string>myExtension</string>
</array>
</dict>
</plist>
as you can see it already contains the aps-environment value because I've added it in my appdescriptor file.
Any idea?
Thanks -
WEB PAGE'S LOADING INTO AN AIR FOR iOS PROJECT
Hi!
I have a complicated problem. I try to find a solution everywhere but I didn’t find anything.
I’m creating a project Air for iOS with Flash CS5 and Flash CS6. I need to find somebody that know how to upload a web page inside an app.
I try to explain better. There is yet a task for upload an html link, but it just work in a new browser window. In this way, every time I want to see a web page, the app will be close. Is it possible to import all the web page inside the Air for ios project, and not in an external window?
I'd like the result is like this:
Thanks a lot.hi....
i used StageWebView class and i wrote this code:
var webView:StageWebView = new StageWebView();
webView.viewPort = new Rectangle( 0, 0, this.stage.stageWidth, this .stage.stageHeight);
webView.stage = this.stage;
webView.loadURL( "http://www.adobe.com" );
The web page opens correctly without using the browser but it opens into all project's frames.
Is it possible to open the web page only in the frame one (for example) ????
Thanks a lot!!!!!!!!!!!!!!!!! -
Why did Adobe stop the support in Air for iOS?
Today Adobe said that he stop with the developing for iOS,
It`s mean that he will NOT update the AIR for iOS for newer iOS (like iOS 5).
I paid many money for a Flash`s license and AppStore`s member!
What sould I do now?What was talked about today is the development of the Flash Player for mobile browsers, that will end after the next version is released. iOS is not affected by that, because Flash didn't work in Safari on iOS anyway.
Adobe did talk about how they were going to do more with AIR mobile apps, so if anything today's announcements is good news for AIR for iOS. -
Multi Touch not supported in Adobe Air for IOS?
Hi, I've just started developing my first app for my iPhone which is an iPhone 3GS. I'm using CS5 to make these apps.
I did a simple test game where there are two arrows on the screen and a fire button. The screen also has a ground and the player standing on it which can be controlled with left/right and fire. Now, if I press right, he moves right, if I press left, he moves left, if I press fire, he jumps... BUT no matter what I do I can't make dual touch work, ie: I press right AND fire, it only recognize just ONE touch point. So I did alot of researching and didn't find much. I thought maybe adding a TouchEvent.TOUCH_TAP which I found a guide on on this page: http://openexhibits.org/support/gestures/1/one-finger-tap , but couldn't make it work, so I found this: http://www.adobe.com/devnet/flash/articles/multitouch_gestures.html and it seems Adobe Air for iPhone only allows four different gestures, no TouchEvents. I found a code somewhere that when run it checks to see if the device it's running on supports TOUCH_TAP stuff and in CS5 I got the message that it is not supported, in Adobe Device Central I get it's supported, on the actual phone (yes, got dev license from Apple and all that and can run my apps from CS5 on my iphone) I get it IS supported, but it doesn't work when I try it for real.
So, my question is: how can I make Adobe Air using CS5 to detect 2 finger presses at the same time in iPhone apps? Like pressing right+fire at the same time, so it doesn't just detect ONE of them being pressed.
Thanks a million for any reply.Before listening for TouchEvents like TOUCH_BEGIN, TOUCH_MOVE, TOUCH_END etc... you need to set the input mode of your device to TOUCH_POINT. By default it is set to GESTURE.
This works fine on the iPAD:
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
stage.addEventListener(TouchEvent.TOUCH_BEGIN, touchBegin);
stage.addEventListener(TouchEvent.TOUCH_MOVE, touchMove);
stage.addEventListener(TouchEvent.TOUCH_END, touchEnd);
private function touchBegin(te:TouchEvent):void {
// your code here
private function touchMove(te:TouchEvent):void {
// your code here
private function touchEnd(te:TouchEvent):void {
// your code here
Hope that helps. -
USER_IDLE or USER_PRESENT event in adobe air for ios
Hi All,
Does anybody is having any idea that how can we detect the user Idle time in Adobe air based ios mobile application.
For a desktop based air project this can eaisly be defined by the below two events:-
1) flash.events.Event.USER_IDLE
2) flash.events.Event.USER_PRESENT
But its very painfull to know that these events are not going to work with the mobile applications.
If anybody is having any idea,please let me know.
Any help will be appriciated.
with Regards,
ShardulThis is possible a possible workaround on mobile. I am currently testing this on iOS.
Use:
import mx.core.FlexGlobals;
import mx.core.mx_internal;
import mx.events.FlexEvent;
import mx.managers.ISystemManager;
systemManager = Application(FlexGlobals.topLevelApplication).systemManager;
systemManager.addEventListener(FlexEvent.IDLE, userIdleHandler);
and then the handler looks something like this:
private function userIdleHandler(e:FlexEvent):void
if(e.currentTarget.mx_internal::idleCounter == 300){ //300 = 30 seconds
trace("idle timeout");
//do stuff
The only real problem Im having with it is that if the user hits the home button and the app suspends, upon resuming the idleCounter is > the threshold number and never gets reset when the user is making touches/presses/clicks.
If you guys refine this post your updates.
Thanks,
Jason -
Adobe Air for iOS - SQLError: 'Error #3115' no such table
I am developing Adobe Air application for iOS with sqlite on it. When running on my local machine, it worked like charm (add, edit & delete). Unfortunately, when tried running on iPAD, it gives me the following error:
SQLError: 'Error #3115', details:'no such table: 'tblEmploye'', operation:'execute', detailID:'2013'
Here's my code when opening the sqlite database: ** data file is saved on the current application directory where all the files are stored:
exampleDBFile = File.documentsDirectory.resolvePath("mydb.db");
if (exampleDBFile==null || !exampleDBFile.exists) {
MovieClip(root).mcSong.visible = false;
MovieClip(root).mcAlert.visible = true;
MovieClip(root).mcAlert.enabled = true;
MovieClip(root).mcAlert.txtErrorMessage.text = "Database not found";
exampleDB = new SQLConnection();
exampleDB.addEventListener(SQLEvent.OPEN, onExampleDBOpened);
exampleDB.addEventListener(SQLErrorEvent.ERROR, onExampleDBError);
//exampleDB.openAsync(exampleDBFile);
exampleDB.open(exampleDBFile);
I also tried using the following but still no luck
exampleDBFile = File.applicationDirectory.resolvePath("mydb.db");
when using this, i receive a different error : Error:Error #3104
And heres the code for adding new entries
sqlInsert = "insert into tblLyrics (empName, empDesc) values
('"+ strReplace(txtSearchMe.text, "'", "") + "','"+ strReplace(txtContent.text,"'","") +"')";
dbStatement.text = sqlInsert;
dbStatement.addEventListener(SQLEvent.RESULT, onDBStatementInsertResult);
dbStatement.execute();
Hoping for your advice....Hi,
I am sorry you are facing this issue. Is the code that you posted all that you are doing? It is missing a few things:
1) You are not creating the dbFile and the table tblEmployee. Do they already exist on your desktop? On device, you would need to create them.
2) dbStatement.SQLConnection property is not set anywhere.
The following sample code is from http://help.adobe.com/en_US/air/reference/html/flash/data/SQLConnection.html. Could you try and see if it works for you?
package
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.display.Sprite;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
import flash.filesystem.File;
public class MultipleInsertTransactionExample extends Sprite
private var conn:SQLConnection;
private var insertEmployee:SQLStatement;
private var insertPhoneNumber:SQLStatement;
private var dbFile:File
public function MultipleInsertTransactionExample():void
// define where to find the database file
//var appStorage:File = File.applicationDirectory;
dbFile = new File(File.documentsDirectory.nativePath + File.separator + "ExampleDatabase.db");
// open the database connection
conn = new SQLConnection();
conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
conn.addEventListener(SQLEvent.OPEN, openHandler);
conn.openAsync(dbFile);
// Called when the database is connected
private function openHandler(event:SQLEvent):void
conn.removeEventListener(SQLEvent.OPEN, openHandler);
// start a transaction
conn.addEventListener(SQLEvent.BEGIN, beginHandler);
conn.begin();
// Called when the transaction begins
private function beginHandler(event:SQLEvent):void
conn.removeEventListener(SQLEvent.BEGIN, beginHandler);
// create and execute the first SQL statement:
// insert an employee record
var createEmployees:SQLStatement = new SQLStatement();
createEmployees.sqlConnection = conn;
createEmployees.text =
"CREATE TABLE IF NOT EXISTS employees(lastName, firstName, email, birthday) ";
createEmployees.execute();
insertEmployee = new SQLStatement();
insertEmployee.sqlConnection = conn;
insertEmployee.text =
"INSERT INTO employees (lastName, firstName, email, birthday) " +
"VALUES (:lastName, :firstName, :email, :birthday)";
insertEmployee.parameters[":lastName"] = "Smith";
insertEmployee.parameters[":firstName"] = "Bob";
insertEmployee.parameters[":email"] = "[email protected]";
insertEmployee.parameters[":birthday"] = new Date(1971, 8, 12);
insertEmployee.addEventListener(SQLEvent.RESULT, insertEmployeeHandler);
insertEmployee.addEventListener(SQLErrorEvent.ERROR, errorHandler);
insertEmployee.execute();
// Called after the employee record is inserted
private function insertEmployeeHandler(event:SQLEvent):void
insertEmployee.removeEventListener(SQLEvent.RESULT, insertEmployeeHandler);
insertEmployee.removeEventListener(SQLErrorEvent.ERROR, errorHandler);
// Get the employee id of the newly created employee row
var result:SQLResult = insertEmployee.getResult();
var employeeId:Number = result.lastInsertRowID;
// Add a phone number to the related phoneNumbers table
var createTab:SQLStatement = new SQLStatement();
createTab.sqlConnection = conn;
createTab.text =
"CREATE TABLE IF NOT EXISTS phoneNumbers(employeeId, type, number)";
createTab.execute();
insertPhoneNumber = new SQLStatement();
insertPhoneNumber.sqlConnection = conn;
insertPhoneNumber.text =
"INSERT INTO phoneNumbers (employeeId, type, number) " +
"VALUES (:employeeId, :type, :number)";
insertPhoneNumber.parameters[":employeeId"] = employeeId;
insertPhoneNumber.parameters[":type"] = "Home";
insertPhoneNumber.parameters[":number"] = "(555) 555-1234";
insertPhoneNumber.addEventListener(SQLEvent.RESULT, insertPhoneNumberHandler);
insertPhoneNumber.addEventListener(SQLErrorEvent.ERROR, errorHandler);
insertPhoneNumber.execute();
// Called after the phone number record is inserted
private function insertPhoneNumberHandler(event:SQLEvent):void
insertPhoneNumber.removeEventListener(SQLEvent.RESULT, insertPhoneNumberHandler);
insertPhoneNumber.removeEventListener(SQLErrorEvent.ERROR, errorHandler);
// No errors so far, so commit the transaction
conn.addEventListener(SQLEvent.COMMIT, commitHandler);
conn.commit();
// Called after the transaction is committed
private function commitHandler(event:SQLEvent):void
conn.removeEventListener(SQLEvent.COMMIT, commitHandler);
trace("Transaction complete");
// Called whenever an error occurs
private function errorHandler(event:SQLErrorEvent):void
// If a transaction is happening, roll it back
if (conn.inTransaction)
conn.addEventListener(SQLEvent.ROLLBACK, rollbackHandler);
conn.rollback();
trace(event.error.message);
trace(event.error.details);
// Called when the transaction is rolled back
private function rollbackHandler(event:SQLEvent):void
conn.removeEventListener(SQLEvent.ROLLBACK, rollbackHandler);
// add additional error handling, close the database, etc.
Thanks,
Sanika -
Adobe Air for iOS - How to access or read current playing music
Hi guys, is there a way in AS3 how to detect the current song playing, for example I want to get the title of the music that is currently playing?
Hi,
This doesn't seem possible in AIR at present. However, in the future version, you should be able to achieve this. No AIR API will be added, but you should be able to write some native code to get this information. I believe this can be done using the iPod Library.
Thanks,
Sanika -
Can one change the built-in dictionary for IoS Adobe Reader?
I'd like to change it to another language. Are there built-in dictionaries in languages other than English? Or can you link it to another offline dictionary on your device so you can use the 'Define' feature directly?
Thanks.[topic moved to iOS subforum]
-
Adobe Air for iOS and Android: FlasCC or Native Extension?
Hi all,
Who know - what provide better perfomance. FlasCC or Native Extension? For example for Math calculations, bitmapdata modification and etc.Well nothing prevent you from mixing flascc with native extension.
Also, I think that you can also use domain memory in AS3 with the Bytearray class (not sure about that).
Flascc vs normal as3 is mostly a question of language (portability) Do you want to write as3 or c++?
Native extension give you speed and native platform access(platform specific feature).
So, you should think about it this way:
AS3, run in flash and air. Is sandboxed. Can use domain memory, but it's a bit harder to leverage than flascc.
Flascc, run in flash and air. Is sandboxed, Can use domain memory. Give you the potential of leveraging the hundreds of opensources lib already out there.
Native extension, run ONLY in air. Is not sandboxed. Native memory management. Also let you leverage the c++ lib.
The best (in my opinion) is to write native code for mobile and desktop (no air or flascc involve) and use flascc for the flash/web platform. It's harder, because you have write portable native code (lots of abstraction), but you mostly have the same problem with native extension. -
Adobe Air for iOS compiling error
I have a dilemma I hope someone can help me understand. I have a sports app that is currently live in the appstore and I am trying to revamp it. The app has a section for all 30 teams of that sport. The way I'm making the app is by adding code for 5 teams data at a time then testing. After getting to the point where there is code for 15 teams I can no longer compile the IPA file, I can remove some teams code then compile. I compile through the command line on a PC with Air 3.9. My project is created using Flash Pro CS6 and I dont use any ANE.
There error I'm getting is:
ld: symbol(s) not found for architecture armv7
Compilation failed while executing : ld64
I've tried compiling on a Mac with a terminal window but same error. I've searched this error and people suggested using the -platformsdk command in the commandline pointing to iOSSDK 7.0 but that didnt work either. I need to know if someone else has experienced this and got past it.Good News. Hope this helps others. Try using AIRSDK 4.0 beta, released today, Dec 3. It is improved for heavy coded project and the compile time is way faster. In the command line just add
-useLegacyAOT no
to use that feature, it will not by defeault. Check out the Air release notes.
Downside is just working on mac for now but can't wait for it work on PC because that is my preferred choice. -
Possibly one of the biggest iPhone 5 or iOS 6 bugs - Misuse of Data
My iPhone 5 keeps sending and receiving data when an iCloud account is configured on the device. It never stops to receive and send data; therefore, this is causing Verizon data overages. The cellular data counter in settings just keeps going up. This occurs when no apps are active. I am averaging about 2 to 3 kb of data a second being used, which adds up. Is this an iOS 6 bug?
Resetting the phone to factory defaults or uninstalling third party apps does not resolve the issue.Just do the Verizon update - Settings > General > About then accept the update & reboot your phone. It should fix your problem
-
Maximum file size for Adobe air for Androind and iOS compiled apps
Hi All
I am working on a project which has a few videos which I need to bundle into my mobile app for an Ipad app I am creating using Adobe Air for iOS. My question is simple is there a maximum file size limit on apps compiled using Adobe air for iOS? And if so what is it? Any help would be great.
regards MikeHi. Im not a 100% sure this is correct. I am able to make a large .IPA file (200+Mb) and it will go onto my iPad 1, but it does not work - Just quicts after a few secs. If I run the same IPA on my iPad 2 it works.
When I take out some of the assets so its a smalelr size then it does run on the iPad. -
Hi,
Does anybody know when is the final version of Adobe AIR for Window is releasing
ThanksYou can get the AIR SDK here:
http://www.adobe.com/products/air/tools/sdk/
The runtime (to run AIR apps) is here:
http://get.adobe.com/air/
Like most software products, it is only as "final" as the latest release.
If this post answered your question or helped, please mark it as such.
Maybe you are looking for
-
Table control scroll bar issue
how to set the scroll bar for table control for the transaction code va42 for billing plan tab. i have added few custom fileds for the table control, when i m re-arranging the columns for the table control, the scroll bar is fixed for one field( as s
-
How to use Sequence in condition??? @_@
Could anyone please help me? I'm writting a small SQL script, and some statements are as following: select errcat_id, error_type from v_error_cat; update t_error set error_type = (select error_type from v_error_cat where ERRCAT_ID = &&ERRCAT_ID)*** w
-
What's a SHAREDCONTENT.RPLN ?
Hi, I am currently working with indesign 5.04. I have recently received a file from a client that is asking for the "SHAREDCONTENT.RPLN" when I attempt to open the file. Any ideas what this may be? Or how to solve this? I also have a contact that has
-
Trying to set up my new iphone 5c using the iTunes back up from my iPhone 4. It keeps getting stuck on step 2 of 5 "syncing calendars" Considering I hardly use the calendar I don't know why it would take so long. (18 hours and counting) Any advice wo
-
My email is though the college where I work. We use Outlook, and I am trying to set up my email but I am not sure what to use for my incoming and outgoing host information.