January 18, 2009

QuickConnectiPhone 1.1.2 now available

Posted in Uncategorized tagged , , , , , , , , at 3:47 am by tetontech

In response to a request from a developer using QCiPhone version 1.1.2 has been created.  It includes the ability to retrieve the device unique id, name, type, OS and OS version from JavaScript.

An example application is included.

Palm Pre and Mojo

Posted in Android Development, iPhone development, misc tagged , , , , , at 2:16 am by tetontech

Well, it looks like Palm has adopted the QuickConnectiPhone approach for their new phone’s SDK.  In fact it is strikingly similar.  Even down to using JSON as the data transfer type between application code and the device.

Hmm….  I wonder where they may have gotten an idea like that?  More power to them.

It sounds like a port Palm’s new phones will be only a couple of days.

Developers —-   Want to get an idea of how to develop for this new system type?  Start working with QuickConnectiPhone or even the recently released QuickConnectAndroid.

In fact, write off of QuickConnect now and you will get an easy move over of your application to yet another device.

Just a reminder, QC is currently available for iPhone, Android and Mac and coming really soon for Linux, Symbian, and Nokia.

I can hardly wait to get my hands on this new Palm SDK.


Advertisement

January 16, 2009

QuickConnect Porting and Development schedule

Posted in Android Development, iPhone development, misc tagged , , , , , , , , , , , , at 6:20 pm by tetontech

I recently got a request for information regarding the planned development and porting of QuickConnect and thought it should be shared here as well.

I am particularly excited about the ad hoc networking.  It will be great when an iPhone, an Android phone, a Linux based phone, macs, linux machines and even PC’s can discover each other and not need to care what the other device/machine is.  Then an application can be anywhere and interoperate with versions of itself or other services on any of the platforms.  And the applications can be written in JavaScript on all of the platforms.  Wow.

The current porting situation is as follows:

  • iPhone: release 1.1.1 available 1.1.2 next few days 1.5 beta in next few days as well
  • Android: beta 1.0 available today if all goes well
  • Mac: 1.0 beta 1 is currently shipping
  • LinuxQT: beta 1.0 in a week or so
  • MobileQT: about two weeks after LinuxQT beta
  • Microsoft porting will happen after the MobileQT port is nearing completion.

The iPhone 1.1.2 release will include access from JavaScript to:

  • device information – OS, device type, UID
  • The iPhone 1.5 beta 1 release will include access from JavaScript to:
  • ad hoc networking and service discovery (Bonjour Networking)

The iPhone 1.5 beta 2 release will include access from JavaScript to:

  • Raw socket networking (access via the synch cable)

The Android 1.0 beta 1 will include access from JavaScript to:

  • Browser and Native SQLite databases via the wrapper
  • AJAX wrapper
  • Vibrate
  • Play Sounds
  • Record and Play Audio
  • GPS data
  • accelerometer data

Android 1.0 beta 2 release will include access from JavaScript to:

  • Embedded Google Maps

Android 1.5 beta 1 will include access from JavaScript to:

  • ad hoc networking and service discovery

The LinuxQT 1.0 beta 1 will include access from JavaScript to:

  • Browser and Native SQLite databases via the wrapper
  • AJAX wrapper
  • Drag and Drop utility if web view supports CSS transitions(experimenting with this now)

The LinuxQT 1.0 beta 2 will include access from JavaScript to:

  • Embedded Google Maps

The LinuxQT 1.5 beta 1 will include access from JavaScript to:

  • ad hoc networking

The MobileQT 1.0 beta 1 will include access from JavaScript to(when the device supports it):

  • Vibration
  • accelerometerdata
  • GPS data
  • Browser and Native SQLite databases via the wrapper
  • AJAX
  • Play sounds
  • Play/record audio

The MobileQT 1.0 beta 2 will include access from JavaScript to:

  • Embedded Google Maps

The MobileQT 1.5 beta 1 will include access from JavaScript to:

  • ad hoc networking

January 15, 2009

Reflections on doing Android development

Posted in Android Development tagged , , , , at 8:52 pm by tetontech

Some time ago after playing with the Android development API and environment I posted that Android looked good from a developers point of view.  After completing the first beta port of QuickConnect to Android I would like to revise that opinion.

The development environment, an eclipse plugin and the emulator, is very unstable.  Not only does it cause my machine to freeze up regularly but sometimes it doesn’t even work correctly.  For example, when i start eclipse and run my application for the first time in the emulator it fails, every time, to actually install and run the application.  So I then I run the application again and instead of using the existing, running emulator it starts another.  I then have to quit both emulators and run again.  Now the application runs.

If this were all I could easily overlook the environment problems but I now have a much bigger issue.  I used the function keys to rotate the emulator to a horizontal position.  Now every time I run my application it crashes before it even gets to my code.  I have rotated it back, quit both the emulator and eclipse, and even rebooted 3 times.  It still crashes.  This is with ZERO code changes from when it was working.  This seems to be, in general, how the development environment has been to work with.  When it does work it is fine but eclipse crashes, freezes my machine, somehow gets in infinite loops, based on listening to my CPU fan, and the emulator is very buggy.

Now to the API and google’s Java Virtual Machine.

Exceptions are not handled well at all.  The VM will crash the application instead of throwing Exceptions sometimes.  When the events are thrown they sometimes have messages associated with them that are retrievable via the getMessage method and sometimes they don’t.  Pattern?   I’ve seen none with either of these behaviors.  If you are going to roll your own VM it had better be rock solid.  Obviously this one is not.

When I first started trying to write code to record audio I didn’t realize that you had to store all files such as these on an sdcard.  When you try to write to the native memory using the MediaRecorder it allows you to make the call and then goes into an infinite loop of reads.  The log file shows this clearly since read errors are reported infinitely.  Hmm…..  Maybe this should not be the behavior.  By the way, I got the same behavior if I tried to store the audio in a directory on the sdcard.  Additional by the way.  You have to programatically create a fake sdcard on your machine and then tell the simulator to use it.  The creation is uses tools outside of the eclipse plugin.

All in all I have to say that the experience has been quite painful.  This becomes especially true when I compare it to my experience in using Apple’s tools to develop iPhone apps.  Even taking into consideration the difficult app signing apple developers have to go through.

Google, if you want to maintain your good buzz with developers maybe you should stop hitting them in the head with bad tools like the ones you have produced here.  Could it be that you just released it to try and maintain some sort of market share even though it was very far from ready?  It seems likely.

January 12, 2009

Moving your code from Dashcode to Xcode

Posted in Uncategorized at 11:41 pm by tetontech

After you have completed your application work in Dashcode here are the steps to move it to Xcode.

1. Publish your Dashcode application – you can publish this to either a directory or to the web server on your machine.  Either way works.

2. Start and name a new Xcode project.

3. Delete the placeholders in the Xcode project.

  1. index.html
  2. main.js
  3. main.css
  4. mappings.js
  5. functions.js
  6. databaseDefinition.js
  7. everything in the Images directory
  8. everything in the Parts directory

5.  Add the files from your published Dashcode directory to the locations that the placeholders used to have.  Do this by dragging and dropping or by right clicking and selecting Add->Existing Files.  You can have Xcode copy the files into your application, this is good if you are sharing it with others, or you can not select the copy checkbox and it will refer to the files in their current location, good if you are going to continue development in Dashcode.

6.  If you told Xcode to copy the files you need to do a global search and replace in Xcode for Images and replace it with a blank string.

7.  If you told Xcode to copy the files you need to do a global search and replace in Xcode for Parts and replace it with a blank string.

8.  If you told Xcode to copy the files you need to do a global search and replace in Xcode for QCiPhone and replace it with a blank string.

9.  Click ‘Build and Go’.  If your project is set to use the simulator the app will run there.  If it is set to use your device, it will install and run, assuming you follow apple’s instructions for distributing your applications to your device.

I hope this helps.

January 7, 2009

QuickConnect Bonjour Networking progress report

Posted in iPhone development tagged , , , , , , at 5:15 am by tetontech

QuickConnectiPhone v1.5 when released will include the ability to discover bonjour services and transfer data to and from them.  All from within JavaScript.

The code is complete and tested and is being merged back into the main development trunk.  Hopefully it will be available soon.

QuickConnect 1.1.1 is now available

Posted in iPhone development at 5:10 am by tetontech

QC 1.1.1 includes several defect fixes relative to using prepared statements and an SQLite database shipped with the application.

Two new examples are also included

  1. stateSaving – how to save state between runs of the application using a native database file included in the application installation.  It uses the getNativeData and setNativeData functions as well as prepared statements.
  2. debugErrorExample – shows how to use the debug messaging and error logging capabilities of QCiPhone.  You can pass any string you would like to the debug function and it will be written to Xcode’s console.  When you use try/catch in your JavaScript and an error is thrown you can call the logError function and pass it the error object that was thrown.  It will write the error message, the file the error happened in, and the line number of the code where the error happened.  This works only for runtime errors not interpretation errors.

%d bloggers like this: