
Chapter 13 Managing Your Device 13.1 Copying and Managing Files Copy files between your device and computer , or copy files to a storage card installed on your device . You can also efficiently manage your files and folders using File Explorer . To copy files using Windows Mobile Device Center or ActiveSync 1. Connect your device to the computer . 2. Click File Management > Browse the contents of your device in Windows Mobile Device Center on your computer , or click Explore in ActiveSync on your computer . This displays the content of your device in Windows Explorer on your computer . 3. To copy a file from your device to your computer : a. Browse the contents of your device , right-click the file you want to copy , and then click Copy . b. Right-click a folder on your computer , and then click Paste . 4. To copy a file from your computer to your device : a. Browse the folders on your computer , right-click the file you want to copy , and then click Copy . b. Right-click a folder on your device , and then click Paste . 230 Managing Your Device To manage files on your device using File Explorer File Explorer lets you browse and manage the contents of your device . The root folder on the device is named My Device , and contains the following folders : My Documents , Program Files , Windows , and more . 1. Tap Start > All Programs > File Explorer . 2. Tap a folder or file to open it . 3. To return to an upper level folder , tap Up . 4. To quickly delete , rename , or copy a file , tap and hold the file , and then choose the desired operation on the shortcut menu . To copy or delete multiple files , tap and drag over the desired files , tap and hold the selection , and then choose an option from the menu . To copy files to a storage card 1. Make sure that the storage card is properly installed on your device . 2. Connect the device to your computer using the USB cable , select Disk Drive on the Connect to PC screen , and then tap Done . 3. On your computer , navigate to the removable disk drive , and then start copying files to the storage card . 4. When finished , disconnect the device from your computer . Managing Your Device 231 13.2 Settings on your Device You can adjust the device settings to suit the way you work . Use the Settings tab to adjust basic device settings . See “ Settings ” in Chapter 3 for details . To see all available settings , tap Start > Settings , and then tap All Settings . Personal tab Icon Description Buttons Assign a program or function to a hardware button or set the function you want to execute ( for instance , lock the device ) when you press and hold the END button . Input Set options for each of the input methods . For instance , you can set the device to play a sound or vibrate when you tap a Full QWERTY or Phone Keypad key . Keyboard Sliding Sound Select a sound to play when you open and close the hardware keyboard . Lock Set a password for your device . Menus Set which programs appear in the Start menu . Note The Start menu is disabled when the TouchFLO 3D Home screen is enabled . To enable the Start menu , tap Start > Settings , tap All Settings > Personal tab > Today > Items tab , and then clear the TouchFLO 3D check box . Owner Information Enter your personal information on your device . Phone Customize phone settings such as the ring tone , or set a PIN number for your SIM card . 232 Managing Your Device Icon Description Sounds & Notifications Enable sounds for events , notifications , and more , and set the type of notification for different events . Today Customize the appearance of the Home screen and the information to display on it . Note You will not see the Today screen when the TouchFLO 3D Home screen is enabled . To display the Today screen , tap Start > Settings button , tap All Settings > Personal tab > Today > Items tab , and then clear the TouchFLO 3D check box . System tab Icon Description About This is where you can see basic information such as the Windows Mobile® version and type of processor used on your device . You can also specify a name for your device . Auto Volume Control Automatically adjust the recording volume to an even level . Certificates See information about certificates that are installed on your device . Clear Storage Reset your device to factory default settings . Clock & Alarms Set the device clock to the date and time of your locale or to a time zone you are visiting . Alarms can also be set on specified days and times of the week . Customer Feedback Set your device to automatically send information about how you use Windows Mobile . By default , this option is disabled . Device Information See information about the firmware version , hardware , identity , and the duration of calls made on your device . Managing Your Device 233 Icon Description Encryption Encrypt files on your storage card . Encrypted files are only readable on your device . Error Reporting Enable or disable the device 's error reporting function . When this function is enabled and a program error occurs , technical data about the state of the program and your computer is logged in a text file and delivered to Microsoft 's technical support if you choose to send it . External GPS Set the appropriate GPS communication ports , if required . You may need to do this when there are programs on your device that access GPS data or you have connected a GPS receiver to your device . G-Sensor Recalibrate the G-Sensor of the device . Use this function when auto-rotate is not working properly . Managed Programs Displays the programs that were installed on your device using System Center Mobile Device Manager . Memory Check the device memory allocation and storage card information . Power Check the remaining battery power . You can also set the brightness of the backlight and the timeout for turning off the display ( switching the device to Sleep mode ) to conserve battery power . Regional Settings Set the regional configuration to use , including the format for displaying numbers , currency , date , and time on your device . Remove Programs Uninstall programs that you previously installed on your device . Screen Recalibrate the screen , apply ClearType to display text more clearly , and change the screen text size . Task Manager Stop running programs and set the ( ) button to end programs immediately when you tap the button . For more information , see “ Using Task Manager ” in this chapter . 234 Managing Your Device Icon Description TouchFLO Set the device to vibrate when you tap the tabs , links , or other onscreen items of supported applications . TV Out Set the video standard to use when outputting to an external display . Windows Update Link to Microsoft 's web site and update Windows Mobile® on your device with the latest security patches or fixes , if they are available . Connections tab Icon Description Advanced Network Turn HSPA on/off , set the GPRS authentication method , and set the line type to use when making a circuit switch data ( CSD ) connection . HSPA is a 3.5G digital data service that provides high-speed downstream/upstream data rates . Check with your wireless service provider whether HSPA is supported in your area . Bluetooth Turn Bluetooth on , set your device to visible mode , and scan for other Bluetooth devices . Comm Manager Manage your device’s connections ( including the phone , GPRS/3G , Wi-Fi , and Bluetooth ) or turn the phone function on or off . Connection Setup Configure your device’s data connections , such as GPRS , and WAP , based on the detected SIM card or selected network operator . See “ Using Connection Setup ” in this chapter for details . Connections Set up one or more types of modem connection for your device , such as phone dial-up and GPRS , so that your device can connect to the Internet or a private local network . Domain Enroll Enroll your device in your company’s domain to let System Center Mobile Device Manager manage the device . Ask your network administrator for more details . Managing Your Device 235 Icon Description USB to PC Set the type of USB connection to your PC . Select the ActiveSync option for synchronizing data , or use Disk Drive mode for transferring files . Wi-Fi Turn the Wi-Fi function on or off , scan for available wireless networks , see information about the active wireless network , and customize Wi-Fi settings . 13.3 Changing Basic Settings Display settings To manually adjust the screen brightness By default , your device automatically adjusts the screen brightness according to the ambient lighting . 1. Tap Start > Settings , and then tap All Settings . 2. On the System tab , tap Power > Backlight tab . 3. Clear the Auto adjust backlight check box . 4. Adjust the brightness by dragging the slider under On battery power and On external power . To automatically turn off the screen backlight when the device is not in use 1. Tap Start > Settings , and then tap All Settings . 2. On the System tab , tap Power > Advanced tab . 3. In On battery power and On external power , specify the time before the screen backlight turns off . 236 Managing Your Device To increase or decrease the size of text on the screen 1. Tap Start > Settings , and then tap All Settings . 2. On the System tab , tap Screen > Text Size tab . 3. Move the slider to increase or decrease the text size . To re-calibrate the touch screen The device touch screen is calibrated before shipment . Re-calibrate the touch screen if it does not accurately respond to screen taps . 1. While the device is on , press and hold the VOLUME UP and VOLUME DOWN buttons , and then tap the screen to open the align screen . 2. Follow the on-screen instructions to complete the calibration . Device name Note The device name is used to identify your device when synchronizing with a computer , connecting to a network , or restoring information from a backup . If you synchronize multiple devices with the same computer , each device must have a unique name . To change the device name 1. Tap Start > Settings , and then tap All Settings . 2. On the System tab , tap About > Device ID tab . 3. Enter the device name . Notes • The device name must begin with a letter , consist of letters from A to Z , numbers from 0 to 9 , and cannot contain spaces . Use the underscore character to separate words . • If you enroll your device to your company’s domain , the device name will be changed to be the same as the one used to enroll the device . Managing Your Device 237 Ringer settings To change the ring type and ring tone 1. Tap Start > Settings , and then tap Sound . 2. Scroll down and then tap Ring Type . Select the ring type you want to use , and then tap Done . 3. Tap Ringtone , and then select the ring tone you want to use . 4. Tap Done . Tips • You can use * . wav , * . mid , * . mp3 , * . wma , or other types of sound files that you downloaded from the Internet or copied from your computer . For a complete list of supported audio file formats , see “ Specifications ” in the Appendix . • To use your sound files as ring tones , copy them first to the /My Documents/My Ringtones folder on your device , and then select the sound from the Ring tone list of your device . For more information about copying files , see “ Copying and Managing Files ” in this chapter . To choose how to be notified about events or actions 1. Tap Start > Settings , and then tap Sound > Advanced . 2. On the Sounds tab , choose how you want to be notified by selecting the appropriate check boxes . 3. On the Notifications tab , in Event , tap a ring type and ring tone for that event or action from the lists below . Tip Turning off sound notifications helps conserve battery power . 238 Managing Your Device Phone services You can change the settings of various phone services for your device . Phone services may include Call Forwarding , Call Waiting , Voicemail , and more . Contact your wireless service provider to find out about the availability of phone services for your device . To access and change settings of phone services 1. Tap Start > Settings , and then tap Communications . 2. On the Comm Manager screen , tap Phone > Phone services . 3. Select the service you want to use , and then tap Get Settings . 4. Choose your desired options , and then tap OK . 13.4 Using Connection Setup After you insert a new SIM card and power on your device , you can use Connection Setup to automatically configure your device’s data connections , such as 3G/GPRS and WAP . Note For details on how to automatically configure the data connections , see “ Auto configuring data connection settings and importing SIM contacts ” in Chapter 1. To manually select the network operator to use for data connections You can manually select your network operator and allow Connection Setup to reconfigure your device’s data connections settings based on the selected operator . 1. Tap Start > Settings , and then tap All Settings . 2. On the Connections tab , tap Connection Setup . 3. Select the network Country and Operator you want to use , then tap OK . Note If you choose a country and/or operator that is different from the installed SIM card network operator , you may not be able to access network services . Managing Your Device 239 4. When prompted to confirm whether you want to configure the data connection settings , tap Yes . 5. After Connection Setup completes the configuration , tap Restart . 13.5 Using Comm Manager Comm Manager lets you easily turn on and off the communication features of your device such as the phone , Bluetooth , Wi-Fi , and data connection . To access Comm Manager Tap Start > Settings , and then tap Communications . 1 2 3 4 5 6 7 8 9 10 11 12 240 Managing Your Device 1 Switch Airplane Mode on or off . See “ Turning the Phone Function On and Off ” in Chapter 2. Access the phone settings and change the PIN codes , configure phone services , and more . Connect a Bluetooth headset or other Bluetooth-enabled device . See Chapter 9 for details . Connect to a wireless network . See Chapter 8 for details . Open ActiveSync and adjust the push e-mail settings . See Chapter 7 for details . Open Connection Setup and automatically configure your data connection settings . 7 Switch the phone on or off . See “ Turning the Phone Function On and Off ” in Chapter 2. 8 Switch Bluetooth on or off . See Chapter 9 for details . 9 Switch Wi-Fi on or off . See Chapter 8 for details . 10 Switch between automatically receiving ( as items arrive ) or manually retrieving Outlook e-mail messages . See Chapter 7 for details . 11 Connect or disconnect active data connections ( 3G/GPRS , or EDGE ) . 12 Adjust the phone , Bluetooth , and Wi-Fi settings . 2 3 4 5 6 13.6 Using Task Manager Task Manager lets you view and stop running programs , configure the and enable the Quick Menu on the Home screen . button , To open Task Manager Tap the Quick Menu button on the top-right corner of the Home screen to open the Quick Menu , and then tap . To configure the Exit ( ) button By default , running programs are shut down when you tap and hold the 1. On the Task Manager screen , tap the Button tab . Note When you clear Enable the “ X ” button to end running programs , tapping the Exit button only closes a program screen . The program is not ended and continues to run in the background . button . Managing Your Device 241 2. Choose the action for shutting down programs ( by tapping the by tapping and holding the button ) . 3. Tap OK . To add a running program to the exclusive list If you add a running program to the Exclusive Programs List , it will not be closed when you tap Stop Selected or Stop All and will not be listed in the Quick Menu on the Home Screen . 1. On the Task Manager screen , tap the Running tab . 2. Tap and hold the program name , and then tap Add Exclusive . Tip To remove a program from the exclusive list , tap and hold the program on the Running tab , then tap Remove from Exclusive . button , or 13.7 Protecting Your Device Protecting your SIM card with a PIN You can protect your SIM card by requiring a PIN ( personal identification number ) every time the device is turned on . You will not be able to use the phone or the data connection until you enter the correct PIN . To enable the SIM card PIN 1. Tap Start > Settings , and then tap Communications . 2. On the Comm Manager screen , tap Phone > PIN Code . 3. Enter the PIN , tap OK , and then tap OK on the dialog box . Tips • To change the PIN , tap Change PIN on the Phone Settings screen . • Emergency calls can be placed at any time , without requiring a PIN . 242 Managing Your Device Protecting your device with a password You can help keep your data more secure by requiring a password every time the device is turned on . To set a device password 1. Tap Start > Settings , and then tap All Settings . 2. On the Personal tab , tap Lock . 3. Select the Prompt if device unused for check box , then specify the idle time before the device requires a password . 4. In the Password type box , select the type of password you would like to use . Tip If your device is configured to connect to a network , use an alphanumeric password for increased security . 5. Enter the password in both the Password and Confirm boxes . 6. Tap OK . The next time the device is turned on , you will be prompted to enter your password . Notes • To ensure that you can always make emergency calls , do not begin your password with the digits of your local emergency number . • If you entered a hint , the hint will be displayed after the wrong password is entered five times . • Each time a wrong password is entered , the device response time gets longer until the device appears to be not responding . • If you forget your password , you can hard reset or clear the device memory . For more information about hard resetting the device and clearing the memory , see “ Resetting Your Device ” . Managing Your Device 243 Encrypting files on your storage card 2. On the System tab , tap Encryption . You can set your device to encrypt files as they are saved on the storage card . 1. Tap Start > Settings , and then tap All Settings . 3. Select Encrypt files when placed on a storage card . Notes • Encrypted files can only be read on the device that encrypted them . • Encrypted files are opened just like other files , provided you are using the device that encrypted them . There is no separate step for you to take to read these files . Important If Encrypt files when placed on a storage card is enabled , backup all files from the storage card before using Clear Storage , hard reset , or updating the operating system . Otherwise you will no longer be able to access the encrypted files on the storage card . Use ActiveSync or Windows Mobile Device Center to transfer files between your storage card and computer . After the procedure , copy your files back to the storage card . 13.8 Resetting Your Device Performing a soft reset Perform a soft ( normal ) reset to clear all active program memory and shut down all active programs . This is useful when your device is running slower than normal , or a program is not performing properly . If a soft reset is performed when programs are running , unsaved work is lost . To perform a soft reset 1. Pull out the stylus . 2. Remove the back cover . For instructions , see “ To remove the back cover ” in Chapter 1. 244 Managing Your Device 3. Use the stylus tip to press the RESET button located at the upper-left side of the open back panel . Your device restarts and displays the Home screen . 4. Replace the back cover and insert the stylus back into its compartment . Performing a hard reset If a normal reset does not solve a system problem , you can perform a hard ( full ) reset . After a hard reset , the device is restored to its default settings—the way it was when you first purchased it and turned it on . You will lose any programs you installed , data you entered , and settings you customized on your device , and only Windows Mobile® software and other pre-installed programs will remain . Warning ! our device will be set back to factory default settings . Make sure that any Y additional installed programs and/or user data have been backed up before you perform a hard reset . Important If Encrypt files when placed on a storage card is enabled , backup all files from the storage card before using Clear Storage , hard reset , or updating the operating system . Otherwise you will no longer be able to access the encrypted files on the storage card . Use ActiveSync or Windows Mobile Device Center to transfer files between your storage card and computer . After the procedure , copy your files back to the storage card . Managing Your Device 245 To perform a hard reset 1. With the device turned off , press and hold the TALK/SEND , END and POWER buttons until you see this message on the screen . This operation will delete all your personal data , and reset all settings to manufacturer default . Press VolUp to restore manufacturer default , or press other keys to cancel . 2. Release the TALK/SEND , END and POWER buttons . 3. Press the VOLUME UP button to perform the hard reset , or press any other button to cancel the reset . Using Clear Storage If you can access the device settings , you can use Clear Storage to reset your device back to factory default settings . 1. Tap Start > Settings , and then tap All Settings . 2. On the System tab , tap Clear Storage . 3. Enter “ 1234 ” and then tap Yes . 246 Managing Your Device 13.9 Windows Update Update Windows Mobile® with the latest security patches and fixes from Microsoft , if these are available . To set up Windows Update The first time you run Windows Update , you need to set up how you want Windows Update to check for updates . 1. Tap Start > Settings , and then tap All Settings . 2. On the System tab , tap Windows Update . 3. On the Update Setup screen , tap Next . 4. Choose how you want to check for updates , then tap Next . Note If you select Automatic , you are asked if you want to use your current data plan to check for updates . Select or clear the Use my data plan to check for and download updates check box , and tap Next . 5. Tap Finish . To check for updates 1. Tap Start > Settings , and then tap All Settings . 2. On the System tab , tap Windows Update . 3. Tap Check Now . To change Windows Update options 1. Tap Start > Settings , and then tap All Settings . 2. On the System tab , tap Windows Update . 3. Tap Menu > Connections to change how the device connects to the Internet when checking for updates , or tap Menu > Change Schedule to change how Windows Update checks for Windows Mobile® updates . Managing Your Device 247 13.10 Connecting to an External Display Your device has a TV output which can be connected to an external display , such as a TV monitor , that has an RCA cable socket . This allows you to output the device screen and audio to a big-screen display . Note You need an HTC TV Out cable to be able to connect your device to an external display . The HTC TV Out cable is sold separately . To connect the device to an external display 1. Turn off the external display . 2. Connect the ends ( red , white , and yellow RCA plugs ) of the HTC TV Out cable to the external display’s RCA sockets . 3. Connect the mini-USB end of the HTC TV Out cable to the sync connector at the bottom of the device . The TV Out screen opens . 4. Choose the video standard to use when outputting the video and then tap Done . For example , if your video is in the NTSC standard and you select PAL-M , TV Out will automatically convert your video to PAL-M before it outputs to the external display . Note If you need to change the video standard option in the future , tap Start > Settings > All Settings > System tab > TV Out . 5. Tap the type of media you want to output . 6. Turn on the external display and then switch it to the input signal that you connected the HTC TV Out cable to ( for example , Video 1 ) . The screen orientation is always in landscape mode while your device is connected to the external display . 