Wednesday, September 10, 2014

Apple’s first crack on the release!

Let’s start with some general observations that apply to both the iPhone 6 and the iPhone 6 Plus. The iPhone 5 and 5S both had flat fronts, sides, and backs with well-defined edges, but those are gone in the iPhone 6. The glass on the front now curves down slightly all the way around the edge to meet the newly-curved sides and back of the phone. It sort of recalls the iPhone 3G or 3GS, which had similar curves but used plastic all the way around instead of aluminum and glass. 

The back of the phones are made out of aluminum with some clearly visible cutouts made to allow wireless signals in and out. The design as a whole is more reminiscent of the 2012 iPod Touch than current iPhones, an observation that extends to the slightly protruding camera lens. You won’t notice this bulge if you keep your phone in a case or sit it on a soft surface, but if you set the phone on a hard table it definitely will wobble a bit in place. Both phones feel lighter than you’d expect them to—4.55 ounces for the 6 and 6.07 ounces for the 6 Plus, compared to 5.64 ounces for the 5-inch HTC One M8 or 5.08 ounces for the new Moto X—but they still feel as sturdy as you’d expect from an Apple product.

The new screen is the star of the show here—the iPhone 6 has a 1334×750 display that retains the 326 PPI density of older Retina iPhones, it just fits more on the screen at once than the iPhone 5 or 5S can. All apps that have been optimized for the larger display can show more stuff at once than they could before, which is obvious if you open Safari or even the Settings app. Icons and buttons remain the same size they were before, in accordance with Apple’s best practices for app design—the Home screen can fit one additional horizontal row of icons than the iPhone 5 can, but you can still only fit in four icons per row.

To make one-handed usage easier on both phones, Apple has introduced a feature called “Reachability.” Double tap the TouchID button and the contents of the screen will shift downward, letting you reach the top half of your app’s contents even if you can only reach the bottom half of the phone’s actual screen. Once you’ve entered Reachability mode, you can also pull down from the top of the “window” to bring up the Notification Center.

We suspect that many iPhone 6 users (especially iPhone 6 Plus users) will simply adjust to using two hands more often with their iPhones, possibly without even realizing it. But Reachability feels like something best used only when you don’t have that option, rather than a great, easy way to handle all your navigation.

Sunday, July 20, 2014

BitLocker issues for Windows Phone Cyan Update

The Lumia Cyan Update has only just started rolling out for the Lumia 625 and Lumia 925, but already we're seeing some of the first bugs come to light. According to a lengthy thread on the Nokia support forum, consumers are experiencing issues after upgrading their Lumia Windows Phones running the 8.1 Preview for Developers and using BitLocker full disk encryption.
The BitLocker encryption appears to cause the smartphone to hang on boot, making it unusable. All that's presented to the user is a message to connect the device to a PC. Luckily, there's a solution, but it requires a full reset the Windows Phone using Nokia's software suite.

To recover this drive, plug in the USB drive that has the BitLocker recovery key:

BitLocker needs your recovery key to unlock your drive because the trusted platform module is not accessible.

For more information on how to retrieve this key, go to http://windows.microsoft.com/recoverykeyfaq from another PC or mobile device.

Press Enter to Reboot and try again

Press Esc or the windows key for other recovery options"

As noted above, there is a solution to this problem, which is to completely reset the device using Nokia's software recovery suite. This should return everything back to normal. According to reports on the same thread (as well as elsewhere), those who upgrade from Windows Phone 8.0 Update 3 to Windows Phone 8.1 and Lumia Cyan have no issues.

It is important to note that regular consumer level devices are not having this problem as BitLocker is an optional security tool enabled through corporate device policies. Although this may be a headache for an IT department, it should not affect the majority of consumers. Indeed, Windows Phone Central has not been flooded with tips on this yet.
 

Wednesday, June 18, 2014

Pinch To Zoom functionality in Windows Phone

If you're building a WP8 exclusive app you can use the new ManipulationDeltaEventArgs.PinchManipulation for pinch & zoom effects. Here's a basic example of how to use ManipulationDeltaEventArgs.PinchManipulation data to scale, move and rotate an image.
 
First, we'll create a basic image hovering in the middle of a grid:
 
<Grid x:Name="ContentPanel">
<Image Source="Assets\Headset.png" Width="200" Height="150" ManipulationDelta="Image_ManipulationDelta" x:Name="img" >
<Image.RenderTransform>
<CompositeTransform CenterX="100" CenterY="75" />
</Image.RenderTransform>
</Image>
</Grid>
 
Next, we'll handle the ManipulationDelta event, check if it's a Pinch Manipulation and apply the correct Silverlight transformations on our UIElement.
 
private void Image_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
if (e.PinchManipulation != null)
{
        
var transform = (CompositeTransform)img.RenderTransform;
 
// Scale Manipulation
transform.ScaleX = e.PinchManipulation.CumulativeScale;
transform.ScaleY = e.PinchManipulation.CumulativeScale;
 
// Translate manipulation
var originalCenter = e.PinchManipulation.Original.Center;
var newCenter = e.PinchManipulation.Current.Center;
transform.TranslateX = newCenter.X - originalCenter.X;
transform.TranslateY = newCenter.Y - originalCenter.Y;
 
// Rotation manipulation
transform.Rotation = angleBetween2Lines(
e.PinchManipulation.Current,
e.PinchManipulation.Original);
 
// end
 
e.Handled = true;
 
}
}
 

public static double angleBetween2Lines(PinchContactPoints line1, PinchContactPoints line2)
{
if (line1 != null && line2 != null)
{
double angle1 = Math.Atan2(line1.PrimaryContact.Y - line1.SecondaryContact.Y, line1.PrimaryContact.X - line1.SecondaryContact.X);
double angle2 = Math.Atan2(line2.PrimaryContact.Y - line2.SecondaryContact.Y, line2.PrimaryContact.X - line2.SecondaryContact.X);
return (angle1 - angle2) * 180 / Math.PI;
}
else
{
return 0.0;
}
}



Scaling: PinchManipulation actually tracks scaling for us, so all we had to do is apply PinchManipulation.CumulativeScale to the scaling factor.

Transform: PinchManipulation tracks the original center and the new center (calculated between the two touch points). By subtracting the new center from the old center we can tell how much the UIElement needs to move and apply that to a translate transform. Note that a better solution here would also account for multiple Manipulation sessions by tracking cumulative original centers which this code doesn't.

Rotation: We figured out the angle between the two touch points and applied it as the rotation transform.
 
 

Monday, June 9, 2014

Find listbox item after tap and hold

First, make sure to put your gesture listener not under the ListBox itself, but in the top level container of the ListBox's data template (the StackPanel in this example):


<ListBox>  
    <ListBox.ItemTemplate>  
        <DataTemplate>   
            <StackPanel>   
                <toolkit:GestureService.GestureListener>   
                    <toolkit:GestureListener Hold="ListItem_Hold"/>   
                </toolkit:GestureService.GestureListener>   
                <TextBlock Text="{Binding LineOne}"/>   
                <TextBlock Text="{Binding LineTwo}"/>   
            </StackPanel>   
        </DataTemplate>  
    </ListBox.ItemTemplate>  
</ListBox> 

In the Hold event handler, the sender will be the StackPanel of the current ListBoxItem. The DataContext of the StackPanel is the view model item (it is like listbox.SelectedItem when an item is selected, however note that a hold gesture won't actually cause an item to be selected).

private void ListItem_Hold(object sender, GestureEventArgs e) 
        { 
            // sender is the StackPanel in this example 
            var holdItem = (sender as StackPanel).DataContext; 
 
            // holdItem has the type of the view model 
        } 

Sunday, June 8, 2014

Clearing backstack in NavigationService

You can use NavigationService.RemoveBackEntry:
For instance, to remove all entries from the stack:
while (this.NavigationService.BackStack.Any())
{
   this.NavigationService.RemoveBackEntry();
}

Also, if you want to remove only the previous page after checking its URI:
var previousPage = this.NavigationService.BackStack.FirstOrDefault();

if (previousPage != null && previousPage.Source.ToString().StartsWith("/MainPage.xaml"))
{
    this.NavigationService.RemoveBackEntry();
}

Friday, June 6, 2014

Watermark effect on a TextBox in Windows Phone

You need to use PhoneTextBox from windows phone toolkit for this.
  1. You can download it from here.
  2. You can also directly add it to your project by typing the following into your package manager console :
    PM> Install-Package WPtoolkit
Now, add a reference of toolkit inside "phone:PhoneApplicationPage" tag in the xaml page as follows: xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
Finally, use PhoneTextBox control....
<toolkit:PhoneTextBox Hint="Username"/>

Hope it helps :)

Monday, April 28, 2014

Error 0×80080008 While Updating Windows Apps In Windows 8

Windows Update plays a significant role in proper functionality of Windows Apps. So if you’re going to update an app, it basically uses the Windows Update resources to get the update. Due to this correlation, if something goes wrong with Windows Updates, it gets reflected as an error with apps. Till now, we have seen fixes for different errors related to Windows Apps and each fix was unique of its kind. Today, I'm going to share you the possible workaround for the error 0×80080008 while updating Windows.

1. Press Windows Key + R, type notepad to open Notepad.

FIX Error 0x80080008 While Updating Windows Apps In Windows 8 1 FIX : Error 0x80080008 While Updating Windows Apps In Windows 8

2. Copy and paste following commands in Notepad:
REGSVR32 WUPS2.DLL /S
REGSVR32 WUPS.DLL /S
REGSVR32 WUAUENG.DLL /S
REGSVR32 WUAPI.DLL /S
REGSVR32 WUCLTUX.DLL /S
REGSVR32 WUWEBV.DLL /S
REGSVR32 JSCRIPT.DLL /S
REGSVR32 MSXML3.DLL /S
FIX Error 0x80080008 While Updating Windows Apps In Windows 8 2 FIX : Error 0x80080008 While Updating Windows Apps In Windows 8

3. Now save the Notepad file with your desired file name but give it asformat of .bat e.g. register.bat. Select the Save as type as All Files. Right click on this file and select Run as administrator. If you are prompted for an administrator password or for confirmation, type the password, or click Yes.

FIX Error 0x80080008 While Updating Windows Apps In Windows 8 3 FIX : Error 0x80080008 While Updating Windows Apps In Windows 8

You’ll see the Command Prompt processing the commands. After successfully executing commands you should reboot and re-try to update your pending apps, this should work fine now.
Hope this helps!