By default, when Android's ProgressDialog is shown, the rest of the screen is dimmed automatically. This is pretty useful in most cases, but sometimes you want to keep the content in the background clear and visible too.
This is possible albeit not overly obvious. It turns out that when ProgressDialog is constructed, it has a flag set specifying that behind the dialog should be dimmed. As passing in 0 to the constructor of the dialog as the chosen style doesn't work, you actually have to create the object, and then remove the offending flag manually.
An example follows, where this is an Activity:
Points of interest, usually heavily influenced by technology, gadgets and programming.
Tuesday, 13 December 2011
Android - ProgressDialog without Dimming Screen
Labels:
android,
background dimming,
dim,
FLAG_DIM_BEHIND,
model dialog,
progress dialog,
progressdialog,
remove dimmed background,
sdk,
stop dimming
Monday, 12 December 2011
Android - Show Soft Keyboard When Activity Starts
This morning I needed to have a soft keyboard (AKA, the on-screen keyboard) showing when an activity launched. Why? Well it was login screen for my app, and the input text field would have focus by default so there was no need for the user to tap on the field prior to the keyboard appearing.
I came across code-based solutions which didn't work for me unfortunately.
The solution was thankfully available using a manifest-based approach.
I came across code-based solutions which didn't work for me unfortunately.
The solution was thankfully available using a manifest-based approach.
Labels:
android development,
INPUT_METHOD_SERVICE,
InputMethodManager,
manifest,
on-screen keyboard,
programmatically,
sdk,
show keyboard,
soft keyboard,
stateVisible,
virtual keyboard,
windowSoftInputMode
Tuesday, 6 December 2011
Android - Get body of HTTP Response as String
Making HTTP requests in Android often results in the same type of boiler plate code being produced. One in particular that annoys me is having to get the response body as in InputStream and using BufferedReader and the likes.
Bundled along with Android is the org.apache.http libraries, which provide classes for easy interaction for common HTTP-related activities.
The following snippet shows how to perform an HTTP GET on a URI, and turn the response body into a string. In my case, I take the string and turn into a JSON object, but you might parse as XML or whatever.
DefaultHttpClient http = new DefaultHttpClient();
HttpGet httpMethod = new HttpGet();
httpMethod.setURI(new URI(SERVER_URI_GOES_HERE));
HttpResponse response = http.execute(httpMethod);
int responseCode = response.getStatusLine().getStatusCode();
switch(responseCode)
{
case 200:
HttpEntity entity = response.getEntity();
if(entity != null)
{
String responseBody = EntityUtils.toString(entity);
}
break;
}
Labels:
android,
android development,
convert InputStream to String,
entity,
get,
get body as string,
http request,
http response,
http response body,
inputstream,
java,
parse response body,
sdk
Thursday, 1 December 2011
Android - Creating a new Activity in Eclipse
The method of creating new Activities in Eclipse is somewhat counter-intuitive if you ask me.
Open your manifest file, which is likely called "AndroidManifest.xml" if you've stuck with defaults. You should see multiple tabs at the bottom, which will give you different views on the one manifest file. Choose the "Application" tab.
You'll see a horribly cluttered screen here, with one of the sections named as "Application Nodes"; this lists all of your existing Activities and allows you to add new ones. Nodes...? C'mon Google!! Anyway, hit the "Add..." button.
You'll see the following prompt:
Choose "Activity" from this list. This will create a new section named as "Attributes for Activity" to the right of "Application Nodes". Don't be tempted to go filling in values yet. See the hyperlinked text, "Name*", yup, click on that:
This will launch the "New Class Wizard" with the superclass already set appropriately for you. Name your class, choose your package as you normally would.
The last step is to add a new layout XML for the Activity (assuming you need one). Under your project, there will be a folder named "res", and under that a folder named "layout". Right click on "layout", and choose "New", then "Other...". Select "Android XML Layout File" from the list.
Give it a name that corresponds to your Activity in some meaningful way, but you are limited as to what characters you can use:
Open your manifest file, which is likely called "AndroidManifest.xml" if you've stuck with defaults. You should see multiple tabs at the bottom, which will give you different views on the one manifest file. Choose the "Application" tab.
You'll see a horribly cluttered screen here, with one of the sections named as "Application Nodes"; this lists all of your existing Activities and allows you to add new ones. Nodes...? C'mon Google!! Anyway, hit the "Add..." button.
You'll see the following prompt:
Choose "Activity" from this list. This will create a new section named as "Attributes for Activity" to the right of "Application Nodes". Don't be tempted to go filling in values yet. See the hyperlinked text, "Name*", yup, click on that:
This will launch the "New Class Wizard" with the superclass already set appropriately for you. Name your class, choose your package as you normally would.
The last step is to add a new layout XML for the Activity (assuming you need one). Under your project, there will be a folder named "res", and under that a folder named "layout". Right click on "layout", and choose "New", then "Other...". Select "Android XML Layout File" from the list.
Give it a name that corresponds to your Activity in some meaningful way, but you are limited as to what characters you can use:
File-based resource names must contain only lowercase a-z, 0-9, or _Once created, open your new Activity class up, and you'll see the onCreate method has been templated for you. After the line, super.onCreate(savedInstanceState); add the following:
setContentView(R.layout.name_of_activity_layout_file);If Eclipse fails to autocomplete once you have typed R, it could be because it has imported android.R automatically and not your own R class. Simply the delete the following line if it exists:
import android.R;After that, organize your imports (CTRL+SHIFT+O) and if prompted, choose your own R class and not the default android.R.
Labels:
activity,
android,
android development,
android xml layout,
create activity,
eclipse,
new activity,
sdk,
setContentView,
valid activity name,
wizard
Saturday, 12 November 2011
Typing into Windows Phone 7 Emulator
Little tip that can save a ton of time for when typing using the emulator. The on-screen keyboard will jump up by default and allow you to use the mouse to click on the keys you are after. However, by default, it will not allow you to use your computer's keyboard to input text.
A very counter-intuitive way around this, is when the on-screen keyboard is shown on the emulator, simply hit the PAGE UP button on your machine's keyboard. This will dismiss the keyboard and let you type at full speed.
And yes, PAGE DOWN will allow you to restore the on-screen keyboard.
A very counter-intuitive way around this, is when the on-screen keyboard is shown on the emulator, simply hit the PAGE UP button on your machine's keyboard. This will dismiss the keyboard and let you type at full speed.
And yes, PAGE DOWN will allow you to restore the on-screen keyboard.
Monday, 31 October 2011
Setting up Synology DS411J NAS Drive
I recently made the big decision of buying a NAS drive. I have previously relied upon external USB drives and they have been fine up until recently. My previous system was to buy a hard drive, use it until it neared being full, buy a bigger one, copy everything over, stop using the old hard drive (too small by comparison now) and rely fully on the new hard drive. This is madness. If you do this, and you like your data, this is madness. Why? Well, you have everything you own on one hard drive. One drive, which could fail at any moment. Not to scaremonger too much, but I began feeling pretty uneasy about this.
My solution was to buy a NAS box which can hold up to 4 drives. I only bought two hard drives (each 2TB) to go inside the NAS, but the box itself can support up to 12TB. I decided to set this up in a mirroring setup, meaning whatever is added to one drive is automatically written to the other. Obviously then, my 2x2TB hard drives only allow for 2TB storage (and not 4TB) but with the huge and potentially live-saving advantage that if any of the drives failed, there would be a perfect mirror still with all my data intact.
For the NAS drive, I opted for the Synology DS411J (read details on Amazon) and for the hard drives themselves, I opted for Samsung HD204UI Spinpoint 2TB SATA 3.5" Hard Drives (read details on Amazon). Or scroll to the bottom for the Amazon links widget.
My solution was to buy a NAS box which can hold up to 4 drives. I only bought two hard drives (each 2TB) to go inside the NAS, but the box itself can support up to 12TB. I decided to set this up in a mirroring setup, meaning whatever is added to one drive is automatically written to the other. Obviously then, my 2x2TB hard drives only allow for 2TB storage (and not 4TB) but with the huge and potentially live-saving advantage that if any of the drives failed, there would be a perfect mirror still with all my data intact.
For the NAS drive, I opted for the Synology DS411J (read details on Amazon) and for the hard drives themselves, I opted for Samsung HD204UI Spinpoint 2TB SATA 3.5" Hard Drives (read details on Amazon). Or scroll to the bottom for the Amazon links widget.
Not the ugliest box |
Labels:
DLNA,
ds411j,
hardware,
HD204UI,
home network,
home networking,
how to set up,
instructions,
media server,
nas,
product review,
raid,
review,
Samsung,
Spinpoint,
step by step guide,
synology,
torrent client
Thursday, 27 October 2011
iPhone Development - Turn On Automatic Reference Counting (ARC) on a Single File in a Project
Off the back of my other post, Turn Off ARC, which instructs you how to configure Xcode to disable ARC for individual files, this post is the polar opposite; how to enable ARC for individual files.
To enable ARC for a single class, you should go to the "Project Navigator", click on your project, and then select the "Build Phases" tab. From the "Compile Sources" dropdown, find your class on which you wish to enable ARC. Note, you enable this on the .m implementation files, not the .h header files.
Notice that there are two columns here, "Name" and "Compiler Flags". Double click in the relevant "Compiler Flags" column for your desired class, and the following:
-fobjc-arc
Clean and Rebuild your project to pick up these changes. Note, as far as I know, you cannot apply this to whole directories in one go, and have to apply it one file at a time.
Labels:
-fobjc-arc,
ARC,
automatic reference counting,
ios 4.0,
ios 5.0,
iphone,
iphone development,
memory management,
sdk,
xcode,
xcode 4.2
Wednesday, 26 October 2011
iPhone Development - Turn Off Automatic Reference Counting (ARC) on a Single File in a Project
Xcode has introduced ARC from version 4.2 and above (compatible with iOS 4.0 and above) and it is excellent. All new projects you create will have it enabled by default (you can uncheck this during the new project wizard if you so desire) and that is just lovely.
But what if you need to import legacy code, or another party's source code that hasn't been coded with ARC enabled? You need to remove all manual memory management commands such as release, retain, autorelease etc... if you want to enable ARC. So if your legacy or third party code has these in it and you can't or don't want to edit the code, then you'll have to tell Xcode that ARC is disabled for these files.
Thankfully, Xcode allows you to have ARC enabled for the whole project, but disabled on a select number of files.
To disable ARC for a single class, you should go to the "Project Navigator", click on your project, and then select the "Build Phases" tab. From the "Compile Sources" dropdown, find your class on which you wish to disable ARC. Note, you disable this on the .m implementation files, not the .h header files.
Notice that there are two columns here, "Name" and "Compiler Flags". Double click in the relevant "Compiler Flags" column for your desired class, and the following:
-fno-objc-arc
Clean and Rebuild your project to pick up these changes. Note, as far as I know, you cannot apply this to whole directories in one go, and have to apply it one file at a time.
For details on how to enable ARC for individual files, see my other post, Turn On ARC.
But what if you need to import legacy code, or another party's source code that hasn't been coded with ARC enabled? You need to remove all manual memory management commands such as release, retain, autorelease etc... if you want to enable ARC. So if your legacy or third party code has these in it and you can't or don't want to edit the code, then you'll have to tell Xcode that ARC is disabled for these files.
Thankfully, Xcode allows you to have ARC enabled for the whole project, but disabled on a select number of files.
To disable ARC for a single class, you should go to the "Project Navigator", click on your project, and then select the "Build Phases" tab. From the "Compile Sources" dropdown, find your class on which you wish to disable ARC. Note, you disable this on the .m implementation files, not the .h header files.
Notice that there are two columns here, "Name" and "Compiler Flags". Double click in the relevant "Compiler Flags" column for your desired class, and the following:
-fno-objc-arc
Clean and Rebuild your project to pick up these changes. Note, as far as I know, you cannot apply this to whole directories in one go, and have to apply it one file at a time.
For details on how to enable ARC for individual files, see my other post, Turn On ARC.
Labels:
-fno-objc-arc,
ARC,
automatic reference counting,
ios 4.0,
ios 5.0,
iphone,
iphone development,
memory management,
sdk,
xcode,
xcode 4.2
Monday, 24 October 2011
Custom HTTP Headers in iPhone UIWebView
If you've done much coding for iPhones, you'll likely have come across the UIWebView class. It is what allows you to use an embeddable web browser component, within your app. It's a useful component that lets you view web pages straight from within your app, using the very capable rendering capabilities granted to the iPhone's full Safari browser.
The problem I faced today, however, was that I needed to customise some of the HTTP headers that are sent to servers, when using the UIWebView component. Turns out that this is possible, although not as straight forward as I first expected. Why might you want to do this? Well you might want to alter the HTTP User Agent string, add some custom headers that your server requires, alter the language supported by the Accept header or you might well just be really curious.
Read the solution after the break.
Labels:
apple,
custom headers,
http,
http header,
ios,
iphone,
iphone development,
NSMutableURLRequest,
NSURLRequest,
obj-c,
objective c,
programming,
sdk,
uiwebview,
uiwebviewdelegate,
user agent
Thursday, 20 October 2011
I Ran a Marathon!
Yes I did. It's true, I have pictures to prove it and everything. On 2nd October, 2011, I participated in the Loch Ness Marathon, some 26.2 miles (~ 42km) of gruelling, undulating, unrelenting hills, unmercifully wearing me down, damaging and breaking my body and spirit. My final time was 5hrs 21mins.
A few weeks on though and I've managed to block out exactly how difficult it was. But hopefully in writing this post and looking back at the pictures, I will remember.
Read more after the break.
Proof, that certainly couldn't possibly have been photoshopped |
A few weeks on though and I've managed to block out exactly how difficult it was. But hopefully in writing this post and looking back at the pictures, I will remember.
Last mile! |
Read more after the break.
Labels:
2011,
baxters marathon,
loch ness,
loch ness marathon,
marathon,
october,
pain,
running
Sat Nav App for WP7
I recently went looking for a good sat nav software for my Windows Phone. Even with mango, Bing Maps is nothing more than "all right".
Sure it can get me from A to B. But doing so in an easy, safe and convenient manner whilst driving seemed to cause it issues. I mean really, it doesn't update the instructions as you pass them, so the onscreen information is still showing you how to get out your street when you've hit roadworks half way through your journey and need a plan B. And don't even get me started on a lack of turn by turn voice directions.
So I went looking. And sadly found no good free apps. However, I did find a rather spiffingly good app that comes at a cost.
Sure it can get me from A to B. But doing so in an easy, safe and convenient manner whilst driving seemed to cause it issues. I mean really, it doesn't update the instructions as you pass them, so the onscreen information is still showing you how to get out your street when you've hit roadworks half way through your journey and need a plan B. And don't even get me started on a lack of turn by turn voice directions.
So I went looking. And sadly found no good free apps. However, I did find a rather spiffingly good app that comes at a cost.
Labels:
gps tuner,
gps tuner llc,
navigation,
sat nav,
turn by turn,
voice navigation,
windows phone 7,
wp7
Tuesday, 27 September 2011
Windows Phone Update - Mango ISV Beta Bundle: Cleanup
My HTC HD2 is a trusty phone. It's been around for about 2 years now. Upon release, it was a monster and was one of the first - and even to this day one of only a dozen or so handsets - to support such a massive screen.
One of the reasons it's still popular in certain circles (the hackers/tinkerers/hobbyists) is how well it has supported modification over the years. I have seen it personally run Windows Mobile 6.5 (and many variants therein), Android (again, many versions) and Windows Phone 7 and Mango. I have also seen the interwebs do amazing(ly geeky) things with it too, like putting Meego and Windows 95 on it!
I run WP7 on it though, a Mango RTM version specifically. How excited I still am though to get the 'proper Mango' version, and hopefully before the more legitimate handsets receive it. The smugness one can have, honestly, you'd think I'd just bought an Apple product and was keen to argue about how amazing it is even though no one really cares only to find that I'd really just been trying to convince myself of its worth... woah, where'd that come from? Moving on....
Today I received the indication that a software update was due... oooh, could this be it? Certainly about the right time, no? Zune indicates the update is for "Mango ISV Beta Bundle: Cleanup" which made my heart sink a little. Probably not the release I'm waiting on then, but almost certainly a precursor to the update.
One of the reasons it's still popular in certain circles (the hackers/tinkerers/hobbyists) is how well it has supported modification over the years. I have seen it personally run Windows Mobile 6.5 (and many variants therein), Android (again, many versions) and Windows Phone 7 and Mango. I have also seen the interwebs do amazing(ly geeky) things with it too, like putting Meego and Windows 95 on it!
I run WP7 on it though, a Mango RTM version specifically. How excited I still am though to get the 'proper Mango' version, and hopefully before the more legitimate handsets receive it. The smugness one can have, honestly, you'd think I'd just bought an Apple product and was keen to argue about how amazing it is even though no one really cares only to find that I'd really just been trying to convince myself of its worth... woah, where'd that come from? Moving on....
Today I received the indication that a software update was due... oooh, could this be it? Certainly about the right time, no? Zune indicates the update is for "Mango ISV Beta Bundle: Cleanup" which made my heart sink a little. Probably not the release I'm waiting on then, but almost certainly a precursor to the update.
Monday, 26 September 2011
BlackBerry Development - JVM Error 104
During BlackBerry development, there are literally hundreds of hurdles that will get in your way.
One of which I noticed recently was the seemingly random error, which causes the "White Screen of Death" you can see below. This is caused by the dreaded JVM Error 104, which is a sort of catch-all something-went-wrong-and-you-didn't-handle-it kind of problem.
One of which I noticed recently was the seemingly random error, which causes the "White Screen of Death" you can see below. This is caused by the dreaded JVM Error 104, which is a sort of catch-all something-went-wrong-and-you-didn't-handle-it kind of problem.
Labels:
104,
bb,
blackberry,
blackberry development,
eclipse,
error,
jvm,
jvm error,
jvm error 104,
sdk,
white screen
Sunday, 18 September 2011
Playstation 1 Emulator on Android Tablet
Recently I got my tablet (Motorola Xoom) playing old Playstation 1 games, using my PS3 controller as an input device. Please do not underestimate how happy I was to see Final Fantasy VII up and running!
In this post, I'll detail the steps needed to get an emulator installed, how to download the games and how to convert the games into a suitable format and what you'll need to use your PS3 controller as input device should you desire such a thing. The emulator has a small cost (currently it is £2.61 or $4.10)
Be warned, it isn't all that straight forward so a certain amount of geekery is recommended! If you have any problems, just ask in the comments section.
Also, be warned, emulators and the games you play on emulators (called ROMs) can be a bit of a grey area, legally speaking. My best understanding is that you have the best shot at staying legal if you own the console you are emulating and own the games that are being emulated. I'm no lawyer by any means, so seek your own legal advice and conscience before diving straight in.
In this post, I'll detail the steps needed to get an emulator installed, how to download the games and how to convert the games into a suitable format and what you'll need to use your PS3 controller as input device should you desire such a thing. The emulator has a small cost (currently it is £2.61 or $4.10)
Be warned, it isn't all that straight forward so a certain amount of geekery is recommended! If you have any problems, just ask in the comments section.
Also, be warned, emulators and the games you play on emulators (called ROMs) can be a bit of a grey area, legally speaking. My best understanding is that you have the best shot at staying legal if you own the console you are emulating and own the games that are being emulated. I'm no lawyer by any means, so seek your own legal advice and conscience before diving straight in.
Labels:
3.1 update,
android,
controller,
emulator,
FPSE,
OTG cable,
playstation,
playstation 1,
ps,
ps3 controller,
psone,
psx,
tablet,
Using a PS3 controller with the Motorola Xoom,
xoom
Thursday, 15 September 2011
BlackBerry - Eclipse Error - Invalid Regex in BlackBerry_App_Descriptor.xml
If you ever see this error from Eclipse whilst doing BlackBerry development,
InvalidRegex: Pattern value '([a-zA-Z_]{1,63}[\s-a-zA-Z_0-9.]{0,63}[;]?)*' is not a valid regular expression
you should of course follow the hint in the error and check that none of your values in your BlackBerry_App_Descriptor.xml will fail the regex.
However, there is a very strange case whereby you will see this error regardless of your values. In fact, creating a new project straight from Eclipse will still show the error.
Turns out this could be caused by having Java JRE 7 installed on your machine. The BlackBerry plugin doesn't support this yet, Eclipse might be trying to use that.
The fix? You simply have to edit the eclipse.ini that will live in the same directory as your eclipse.exe that you use to start the IDE. Closing Eclipse and making a backup of eclipse.ini before you do this would be a good idea.
Find the line "openFile" and immediately after, add the following:
-vm
C:/Program Files/Java/jre6/bin/javaw.exe [or wherever your jre6 directory might be]
Cross your fingers and restart Eclipse.
Rebuild your projects.
Wow I hate programming for BlackBerry. Is it not dead yet? Seriously any platform that needs a site like this (http://isthesigningserverdown.com/) needs to get itself sorted.
InvalidRegex: Pattern value '([a-zA-Z_]{1,63}[\s-a-zA-Z_0-9.]{0,63}[;]?)*' is not a valid regular expression
you should of course follow the hint in the error and check that none of your values in your BlackBerry_App_Descriptor.xml will fail the regex.
However, there is a very strange case whereby you will see this error regardless of your values. In fact, creating a new project straight from Eclipse will still show the error.
Turns out this could be caused by having Java JRE 7 installed on your machine. The BlackBerry plugin doesn't support this yet, Eclipse might be trying to use that.
The fix? You simply have to edit the eclipse.ini that will live in the same directory as your eclipse.exe that you use to start the IDE. Closing Eclipse and making a backup of eclipse.ini before you do this would be a good idea.
Find the line "openFile" and immediately after, add the following:
-vm
C:/Program Files/Java/jre6/bin/javaw.exe [or wherever your jre6 directory might be]
Cross your fingers and restart Eclipse.
Rebuild your projects.
Wow I hate programming for BlackBerry. Is it not dead yet? Seriously any platform that needs a site like this (http://isthesigningserverdown.com/) needs to get itself sorted.
Labels:
blackberry,
BlackBerry_App_Descriptor.xml,
eclipse,
invalid regex,
java 7,
jre,
jre 7,
problem,
programming
Sunday, 7 August 2011
Ear won't pop
I'm currently experiencing a very odd medical condition. Whilst I'm not typically one to broadcast all my embarrassing ailments; I feel this is suitably odd/not embarrassing enough to worry about people knowing. Additionally, in my Googling for people with the same problem, there seems to be a fair few out there, but with no real suitable conclusion to the problem, so if nothing else, I'd like to raise my hand in the air and shout me too! Shouting because I probably won't hear myself doing so.
The problem you ask? Well as the title hints at, my ear won't pop. I was on a plane home 8 days ago (returning from a week in the Algarve, Portugal) and during the flight, my ears were constantly requiring popping. For anyone interested, I favour the fairly standard popping technique, of holding my nose and attempting to blow my nose, resulting in some pressure relief via the ears. My right ear was responding to this as normal, but my left ear just didn't seem to want to give. And a week and a bit on, it still hasn't.
The problem you ask? Well as the title hints at, my ear won't pop. I was on a plane home 8 days ago (returning from a week in the Algarve, Portugal) and during the flight, my ears were constantly requiring popping. For anyone interested, I favour the fairly standard popping technique, of holding my nose and attempting to blow my nose, resulting in some pressure relief via the ears. My right ear was responding to this as normal, but my left ear just didn't seem to want to give. And a week and a bit on, it still hasn't.
Monday, 13 June 2011
Playing Videos on the Xoom
I recently took my girlfriend on a weekend away up to Loch Tay. It was to celebrate our 2 year anniversary and she had previously mentioned she would like to go camping. I like the idea of camping, but also kinda like having my phone above 90% charge at all times. Not to mention liking to keep my beers cooled! So we decided to go camping; the premium edition. We stayed in a wooden wigwam. It was a tremendously relaxing weekend which was long overdue given the amount of stress I was going through prior to leaving.
Obviously, a weekend away in the almost outdoors (the indoor heating, fridge/freezer, TV, microwave, kettle and shower qualifies the 'almost' I feel) is a good time to fill up the Xoom with some high quality videos to wile away the hours as the Scottish summer rains down outside! But what a nightmare getting videos to copy onto the Xoom. Read on for the problem and the seemingly bizarre solution.
Obviously, a weekend away in the almost outdoors (the indoor heating, fridge/freezer, TV, microwave, kettle and shower qualifies the 'almost' I feel) is a good time to fill up the Xoom with some high quality videos to wile away the hours as the Scottish summer rains down outside! But what a nightmare getting videos to copy onto the Xoom. Read on for the problem and the seemingly bizarre solution.
Tuesday, 10 May 2011
XBMC control for Motorola Xoom
Been a while since my last post, so thought I'd try resume with a quick and fairly non-technical post.
Bought myself a Motorola Xoom the other week (month?) there and have been loving it. It's one of these things which enters your life with such subtlety that one would be forgiven as branding it a needless luxury. It's not how much it changed my life when I got it that surprised me, rather, how much I can't now seem to function without it.
There have been many poor attempts at justifying me spoiling myself to some shiny luxury. However, one of the big ones I reckoned would be to have this portable browser in my hands one second, allowing me toplay on Facebook research the social dynamics of my generation, then quickly switch to a remote for my PC, enabling me to control the background, yet necessary, TV show I inevitably watch whilst doing other things. I'm a fiddler. Worse, I like to fiddle as a background task.
Bought myself a Motorola Xoom the other week (month?) there and have been loving it. It's one of these things which enters your life with such subtlety that one would be forgiven as branding it a needless luxury. It's not how much it changed my life when I got it that surprised me, rather, how much I can't now seem to function without it.
There have been many poor attempts at justifying me spoiling myself to some shiny luxury. However, one of the big ones I reckoned would be to have this portable browser in my hands one second, allowing me to
Thursday, 31 March 2011
WP7 - URI Mapper
Overview
I am always on the lookout for ways to improve code; short term benefits are nice but there is a great feeling in identifying potential problems way in advance, and putting in the framework early to make life easier later. Using a UriMapping when developing WP7 apps is one of the many ways you can help eliminate annoyances later.
So first of all, a brief description of how page navigation works in WP7, what a UriMapper is, and why it pays to use it. Scroll down passed these descriptions if you'd rather just see how to implement one.
I am always on the lookout for ways to improve code; short term benefits are nice but there is a great feeling in identifying potential problems way in advance, and putting in the framework early to make life easier later. Using a UriMapping when developing WP7 apps is one of the many ways you can help eliminate annoyances later.
So first of all, a brief description of how page navigation works in WP7, what a UriMapper is, and why it pays to use it. Scroll down passed these descriptions if you'd rather just see how to implement one.
Labels:
development,
navigation service,
navigationservice,
programming,
uri mapper,
urimapper,
windows phone 7,
wp7,
xaml
Tuesday, 8 March 2011
Micro Payments, Major Annoyance
Since when does paying £50 for a game mean you are only renting it nowadays?
The world has changed a lot in the last two decades, and probably in no greater way than in technology. Whilst the advent and subsequent popularisation of the internet is probably the single, greatest thing which has changed the way people live their lives in recent years, it has some damn subtle annoyances that come with it.
The world has changed a lot in the last two decades, and probably in no greater way than in technology. Whilst the advent and subsequent popularisation of the internet is probably the single, greatest thing which has changed the way people live their lives in recent years, it has some damn subtle annoyances that come with it.
Labels:
alex kidd,
bidet,
call of duty,
console,
gaming,
micro payment,
micropayment,
ownership of content,
ps3
Friday, 4 March 2011
WP7 Web Browser
After spending some time working with WP7 now, I really must comment on the embeddable web browser, the WebBrowser component. As a recent convert to WP7 as a user, I can't say I've too many complaints about the phone's main browser (Internet Explorer, as you may have guessed) and it usually does the job fine. In my heart, I know it could be much better, much smoother, support many standards better, be... much more like a Webkit browser really!
However, having found a requirement which could have been satisfied with either native components, or the use of the embeddable web browser, I opted straight for the web browser route. The reason for this, mainly, is that this solution has been used across iPhone, Android and BlackBerry with little or no tweaks needed on the server side when integrating the new platforms. Take all the content needing shown, use HTML to handle the layout (optimised for the requesting device, of course), wrap it all up and send to the device which can store it locally for offline viewing. Elegant, efficient, flexible... perfect. And best of all, changes to this layout requires no code changes, so can be edited even after the apps have went live. Beautiful, I must say, even though I can't take the credit for the original idea. Cue WP7 deciding to be a bit special.
However, having found a requirement which could have been satisfied with either native components, or the use of the embeddable web browser, I opted straight for the web browser route. The reason for this, mainly, is that this solution has been used across iPhone, Android and BlackBerry with little or no tweaks needed on the server side when integrating the new platforms. Take all the content needing shown, use HTML to handle the layout (optimised for the requesting device, of course), wrap it all up and send to the device which can store it locally for offline viewing. Elegant, efficient, flexible... perfect. And best of all, changes to this layout requires no code changes, so can be edited even after the apps have went live. Beautiful, I must say, even though I can't take the credit for the original idea. Cue WP7 deciding to be a bit special.
Labels:
internet explorer,
mobile,
mobile browser,
webkit,
windows phone 7,
wp7,
WP7 IE
Monday, 28 February 2011
Windows Phone 7 Development
That's been almost a whole day now working with WP7 so long overdue to start making notes on it.
Getting the right packages downloaded isn't quite as obvious as I would have expected, but certainly didn't take too long to find. (http://create.msdn.com/en-us/home/getting_started). The site recommended getting the January update on top of the default tool set, advertising the much discussed copy-paste functionality. I had to sigh remembering it wasn't actually available on any WP7 devices. Anyway, too soon for negativity, stuck it on to download and install. Grateful there is no messing around with path variables etc... (something I'm entirely comfortable with, but still resent having to do with the comparable java set up).
Hello world app rattled out nice and quick, always a good sign. Found the compiled app (in .xap format) nestled nicely in my bin folder too, which allowed for easy testing on my WP7-hacked handset (a story for another time perhaps).
So everything seems reasonably nice enough to code in. My only issue at the moment is that because C# is fairly similar to Java, at the syntactic layer at least, I expect to be able to code much faster than I am. It is deceptively similar, much to my folly as I keep finding out. And because it is indeed so similar, I refuse to do much reading on the language itself, focusing exclusively on reading about the mobile platform which utilises it. There's also a distinct lack of smugness at getting something to work. Something you have a-plenty after figuring out just how many dozen ] to add to the end of my Objective C lines of code, but that is probably a good thing. One can have too much smugness.
The single biggest issue I have with the development cycle at the moment is caused by Visual Studio. Again, so deceptively like my IDE of choice (Eclipse), and yet the devil really is in the details. All those features, all those little shortcuts my fingers remember (despite contemplating it now, my brain forgetting) are gone. But that's ok right, just need to learn the new shortcuts. And then I find out that Eclipse isn't just an average IDE, it's a blooming great one! Anyone who develops in Eclipse exclusively; take a break from it for a while, and try something else. Not because there are better ones out there, but because you will almost certainly be taking it for granted. Makes me swoon for returning to Android apps, sadly. Sadly as I really want WP7 to be a success amongst developers and, therefore, Joe Public. If Visual Studio had been given the same love and care as Eclipse has had, it would be half the battle won in luring Android or iPhone developers. Mind you, it's still miles better than XCode.
Getting the right packages downloaded isn't quite as obvious as I would have expected, but certainly didn't take too long to find. (http://create.msdn.com/en-us/home/getting_started). The site recommended getting the January update on top of the default tool set, advertising the much discussed copy-paste functionality. I had to sigh remembering it wasn't actually available on any WP7 devices. Anyway, too soon for negativity, stuck it on to download and install. Grateful there is no messing around with path variables etc... (something I'm entirely comfortable with, but still resent having to do with the comparable java set up).
Hello world app rattled out nice and quick, always a good sign. Found the compiled app (in .xap format) nestled nicely in my bin folder too, which allowed for easy testing on my WP7-hacked handset (a story for another time perhaps).
So everything seems reasonably nice enough to code in. My only issue at the moment is that because C# is fairly similar to Java, at the syntactic layer at least, I expect to be able to code much faster than I am. It is deceptively similar, much to my folly as I keep finding out. And because it is indeed so similar, I refuse to do much reading on the language itself, focusing exclusively on reading about the mobile platform which utilises it. There's also a distinct lack of smugness at getting something to work. Something you have a-plenty after figuring out just how many dozen ] to add to the end of my Objective C lines of code, but that is probably a good thing. One can have too much smugness.
The single biggest issue I have with the development cycle at the moment is caused by Visual Studio. Again, so deceptively like my IDE of choice (Eclipse), and yet the devil really is in the details. All those features, all those little shortcuts my fingers remember (despite contemplating it now, my brain forgetting) are gone. But that's ok right, just need to learn the new shortcuts. And then I find out that Eclipse isn't just an average IDE, it's a blooming great one! Anyone who develops in Eclipse exclusively; take a break from it for a while, and try something else. Not because there are better ones out there, but because you will almost certainly be taking it for granted. Makes me swoon for returning to Android apps, sadly. Sadly as I really want WP7 to be a success amongst developers and, therefore, Joe Public. If Visual Studio had been given the same love and care as Eclipse has had, it would be half the battle won in luring Android or iPhone developers. Mind you, it's still miles better than XCode.
First post
I've been meaning to start writing in some form for a while, so I figure now, whilst waiting on my flatmate getting off his phone, would be a good time to at least add the functionality to the site. As soon as I start typing this, I'm already thinking that it would be good to have an app to use to write my blogs up so I may have to add that to the investigate/build to-do list.
Subscribe to:
Posts (Atom)