Print USB, All In One Laserjet Supplies and More …

December 10, 2010

New Motor Vehicle Sales = Ventes Vehicules Auto Neufs – Print On Demand Service Reviews

Filed under: Print Sale — Tags: , , , , , , , , , , — admin @ 8:28 pm

New Motor Vehicle Sales = Ventes Vehicules Auto Neufs – Print On Demand Service

This publication presents sales data of new vehicles by type, origin of manufacture, and by province of sale. Average price of vehicles sold and market share data are available by the same breakdowns. Seasonally adjusted estimates are available at the national level for sales by type of vehicle.

Price:

October 22, 2010

Development and remote installation of Java service for the Android Devices

Filed under: Remote Printing — Tags: , , , , , , — admin @ 3:29 am

Written by:
Igor Darkov, Software Developer of Device Team, Apriorit Inc.

In this article I’ve described:

How to develop simple Java service for the Android Devices; How to communicate with a service from the other processes and a remote PC; How to install and start the service remotely from the PC. 1. Java Service Development for the Android Devices

Services are long running background processes provided by Android. They could be used for background tasks execution. Tasks can be different: background calculations, backup procedures, internet communications, etc. Services can be started on the system requests and they can communicate with other processes using the Android IPC channels technology. The Android system can control the service lifecycle depending on the client requests, memory and CPU usage. Note that the service has lower priority than any process which is visible for the user.

Let’s develop the simple example service. It will show scheduled and requested notifications to user. Service should be managed using the service request, communicated from the simple Android Activity and from the PC.

First we need to install and prepare environment:

Download and install latest Android SDK from the official web site (http://developer.android.com); Download and install Eclipse IDE (http://www.eclipse.org/downloads/); Also we’ll need to install Android Development Tools (ADT) plug-in for Eclipse.

After the environment is prepared we can create Eclipse Android project. It will include sources, resources, generated files and the Android manifest.

1.1 Service class development

First of all we need to implement service class. It should be inherited from the android.app.Service (http://developer.android.com/reference/android/app/Service.html) base class. Each service class must have the corresponding <service> declaration in its package’s manifest. Manifest declaration will be described later. Services, like the other application objects, run in the main thread of their hosting process. If you need to do some intensive work, you should do it in another thread.

In the service class we should implement abstract method onBind. Also we override some other methods:

onCreate(). It is called by the system when the service is created at the first time. Usually this method is used to initialize service resources. In our case the binder, task and timer objects are created. Also notification is send to the user and to the system log: public void onCreate() { super.onCreate(); Log.d(LOG_TAG, “Creating service”); showNotification(“Creating NotifyService”); binder = new NotifyServiceBinder(handler, notificator); task = new NotifyTask(handler, notificator); timer = new Timer(); } onStart(Intent intent, int startId). It is called by the system every time a client explicitly starts the service by calling startService(Intent), providing the arguments it requires and the unique integer token representing the start request. We can launch background threads, schedule tasks and perform other startup operations. public void onStart(Intent intent, int startId) { super.onStart(intent, startId); Log.d(LOG_TAG, “Starting service”); showNotification(“Starting NotifyService”); timer.scheduleAtFixedRate(task, Calendar.getInstance().getTime(), 30000); } onDestroy(). It is called by the system to notify a Service that it is no longer used and is being removed. Here we should perform all operations before service is stopped. In our case we will stop all scheduled timer tasks. public void onDestroy() { super.onDestroy(); Log.d(LOG_TAG, “Stopping service”); showNotification(“Stopping NotifyService”); timer.cancel(); } onBind(Intent intent). It will return the communication channel to the service. IBinder is the special base interface for a remotable object, the core part of a lightweight remote procedure call mechanism. This mechanism is designed for the high performance of in-process and cross-process calls. This interface describes the abstract protocol for interacting with a remotable object. The IBinder implementation will be described below. public IBinder onBind(Intent intent) { Log.d(LOG_TAG, “Binding service”); return binder; }

To send system log output we can use static methods of the android.util.Log class (http://developer.android.com/reference/android/util/Log.html). To browse system logs on PC you can use ADB utility command: adb logcat.

The notification feature is implemented in our service as the special runnable object. It could be used from the other threads and processes. The service class has method showNotification, which can display message to user using the Toast.makeText call. The runnable object also uses it:

public class NotificationRunnable implements Runnable { private String message = null; public void run() { if (null != message) { showNotification(message); } } public void setMessage(String message) { this.message = message; } }

Code will be executed in the service thread. To execute runnable method we can use the special object android.os.Handler. There are two main uses for the Handler: to schedule messages and runnables to be executed as some point in the future; and to place an action to be performed on a different thread than your own. Each Handler instance is associated with a single thread and that thread’s message queue. To show notification we should set message and call post() method of the Handler’s object.

1.2 IPC Service

Each application runs in its own process. Sometimes you need to pass objects between processes and call some service methods. These operations can be performed using IPC. On the Android platform, one process can not normally access the memory of another process. So they have to decompose their objects into primitives that can be understood by the operating system , and “marshall” the object across that boundary for developer.

The AIDL IPC mechanism is used in Android devices. It is interface-based, similar to COM or Corba, but is lighter . It uses a proxy class to pass values between the client and the implementation.

AIDL (Android Interface Definition Language) is an IDL language used to generate code that enables two processes on an Android-powered device to communicate using IPC. If you have the code in one process (for example, in Activity) that needs to call methods of the object in another process (for example, Service), you can use AIDL to generate code to marshall the parameters.

Service interface example showed below supports only one sendNotification call:

interface INotifyService { void sendNotification(String message); }

The IBinder interface for a remotable object is used by clients to perform IPC. Client can communicate with the service by calling Context’s bindService(). The IBinder implementation could be retrieved from the onBind method. The INotifyService interface implementation is based on the android.os.Binder class (http://developer.android.com/reference/android/os/Binder.html):

public class NotifyServiceBinder extends Binder implements INotifyService { private Handler handler = null; private NotificationRunnable notificator = null; public NotifyServiceBinder(Handler handler, NotificationRunnable notificator) { this.handler = handler; this.notificator = notificator; } public void sendNotification(String message) { if (null != notificator) { notificator.setMessage(message); handler.post(notificator); } } public IBinder asBinder() { return this; } }

As it was described above, the notifications could be send using the Handler object’s post() method call. The NotificaionRunnable object is passed as the method’s parameter.

On the client side we can request IBinder object and work with it as with the INotifyService interface.  To connect to the service the android.content.ServiceConnection interface implementation can be used. Two methods should be defined: onServiceConnected, onServiceDisconnected:

ServiceConnection conn = null; … conn = new ServiceConnection() { public void onServiceConnected(ComponentName name, IBinder service) { Log.d(“NotifyTest”, “onServiceConnected”); INotifyService s = (INotifyService) service; try { s.sendNotification(“Hello”); } catch (RemoteException ex) { Log.d(“NotifyTest”, “Cannot send notification”, ex); } } public void onServiceDisconnected(ComponentName name) { } };

The bindService method can be called from the client Activity context to connect to the service:

Context.bindService(new Intent(this, NotifyService.class), conn, Context.BIND_AUTO_CREATE);

The unbindService method can be called from the client Activity context to disconnect from the service:

Context.unbindService(conn); 1.3 Remote service control

Broadcasts are the way applications and system components can communicate. Also we can use broadcasts to control service from the PC. The messages are sent as Intents, and the system handles dispatching them, including starting receivers.

Intents can be broadcasted to BroadcastReceivers, allowing messaging between applications. By registering a BroadcastReceiver in application’s AndroidManifest.xml (using <receiver> tag) you can have your application’s receiver class started and called whenever someone sends you a broadcast. Activity Manager uses the IntentFilters, applications register to figure out which program should be used for a given broadcast.

Let’s develop the receiver that will start and stop notify service on request. The base class android.content.BroadcastReceiver should be used for these purposes (http://developer.android.com/reference/android/content/BroadcastReceiver.html):

public class ServiceBroadcastReceiver extends BroadcastReceiver { … private static String START_ACTION = “NotifyServiceStart”; private static String STOP_ACTION = “NotifyServiceStop”; … public void onReceive(Context context, Intent intent) { … String action = intent.getAction(); if (START_ACTION.equalsIgnoreCase(action)) { context.startService(new Intent(context, NotifyService.class)); } else if (STOP_ACTION.equalsIgnoreCase(action)) { context.stopService(new Intent(context, NotifyService.class)); } } }

To send broadcast from the client application we use the Context.sendBroadcast call. I will describe how to use receiver and send broadcasts from the PC in chapter 2.

1.4 Android Manifest

Every application must have an AndroidManifest.xml file in its root directory. The manifest contains essential information about the application to the Android system, the system must have this information before it can run any of the application’s code. The core components of an application (its activities, services, and broadcast receivers) are activated by intents. An intent is a bundle of information (an Intent object) describing a desired action — including the data to be acted upon, the category of component that should perform the action, and other pertinent instructions. Android locates an appropriate component to respond to the intent, starts the new instance of the component if one is needed, and passes it to the Intent object.

We should describe 2 components for our service:

NotifyService class is described in the <service> tag. It will not start on intent. So the intent filtering is not needed. ServiceBroadcastReceived class is described in the <receiver> tag. For the broadcast receiver the intent filter is used to select system events: <application android:icon=”@drawable/icon” android:label=”@string/app_name”> … <service android:enabled=”true” android:name=”.NotifyService” android:exported=”true”> </service> <receiver android:name=”ServiceBroadcastReceiver”> <intent-filter> <action android:name=”NotifyServiceStart”></action> <action android:name=”NotifyServiceStop”></action> </intent-filter> </receiver> … 2. Java service remote installation and start 2.1 Service installation

Services like the other applications for the Android platform can be installed from the special package with the .apk extension. Android package contains all required binary files and the manifest.

Before installing the service from the PC we should enable the USB Debugging option in the device Settings-Applications-Development menu and then connect device to PC via the USB.

On the PC side we will use the ADB utility which is available in the Android SDK tools directory. The ADB utility supports several optional command-line arguments that provide powerful features, such as copying files to and from the device. The shell command-line argument lets you connect to the phone itself and issue rudimentary shell commands.

We will use several commands:

Remote shell command execution: adb shell <command> <arguments> File send operation: adb push <local path> <remote path> Package installation operation: adb install <package>.apk

I’ll describe the package installation process in details. It consists of several steps which are performed by the ADB utility install command:

First of all the .apk package file should be copied to the device. The ADB utility connects to the device and has limited “shell” user privileges. So almost all file system directories are write-protected for it. The /data/local/tmp directory is used as the temporary storage for package files. To copy package to the device use the command: adb push NotifyService.apk /data/local/tmp Package installation. ADB utility uses special shell command to perform this operation. The “pm” (Package Manager?) utility is present on the Android devices. It supports several command line parameters which are described in the Appendix I. To install the package by yourself execute the remote shell command: adb shell pm install /data/local/tmp/NotifyService.apk Cleanup. After the package is installed, ADB removes the temporary file stored in /data/local/tmp folder using the “rm” utility: adb shell rm /data/local/tmp/NotifyService.apk. To uninstall package use the “pm” utility: adb shell pm uninstall <package> 2.2 Remote service control

To be able to start and stop the NotifyService from the PC we can use the “am” (Activity Manager?) utility which is present on the Android device. The command line parameters are described in the Appendix II. The “am” utility can send system broadcast intents. Our service has the broadcast receiver which will be launched by the system request.

To start NotifyService we can execute remote shell command:

adb shell am broadcast –a NotifyServiceStart

To stop the NotifyService we can execute remote shell command:

adb shell am broadcast –a NotifyServiceStop

Note, that the NotifyServiceStart and NotifyServiceStop intents were described in the manifest file inside the <receiver> … <intent-filter> tag. Other requests will not start the receiver.

Appendix I. PM Usage (from Android console) pm [list|path|install|uninstall] pm list packages [-f] pm list permission-groups pm list permissions [-g] [-f] [-d] [-u] [GROUP] pm path PACKAGE pm install [-l] [-r] PATH pm uninstall [-k] PACKAGE The list packages command prints all packages. Use the -f option to see their associated file. The list permission-groups command prints all known permission groups. The list permissions command prints all known permissions, optionally only those in GROUP. Use the -g option to organize by group. Use the -f option to print all information. Use the -s option for a short summary. Use the -d option to only list dangerous permissions. Use the -u option to list only the permissions users will see. The path command prints the path to the .apk of a package. The install command installs a package to the system. Use the -l option to install the package with FORWARD_LOCK. Use the -r option to reinstall an exisiting app, keeping its data. The uninstall command removes a package from the system. Use the -k option to keep the data and cache directories around after the package removal. Appendix II. AM Usage (from Android console) am [start|broadcast|instrument] am start -D INTENT am broadcast INTENT am instrument [-r] [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>] [-w] <COMPONENT> INTENT is described with: [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>] [-c <CATEGORY> [-c <CATEGORY>] …] [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...] [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...] [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...] [-n <COMPONENT>] [-f <FLAGS>] [<URI>] Resources used: Android Installation Guide.

http://developer.android.com/sdk/1.5_r2/installing.html

Android Developer reference.

http://developer.android.com/reference/classes.html

Jesse Burns. Developing Secure Mobile Applications for Android.

https://www.isecpartners.com/files/iSEC_Securing_Android_Apps.pdf

Designing a Remote Interface Using AIDL

http://developer.android.com/guide/developing/tools/aidl.html

Apriorit is an Ukrainian software development company.

Apriorit develops its own products as well as provide offshore development and QA services in the areas of advanced system programming, driver development, software for devices.

One of the key values of Apriorit’s specialists is knowledge generation and sharing of experience.

Learn more about Apriorit and its experience at Apriorit Official site

October 11, 2010

Upload & Edit Online, 75% Commission – Instant Service

Filed under: Envelopes Printing — Tags: , , , , , — admin @ 3:17 pm

Hot, Lifetime “After Sales Service”, Easy to use: Uploads brochures, bills, invoices, financials, printed lists, books, advertisement, proposals, magazines, articles…Downloads their editable version instantly at http://jvinfosol3.wordpress.com
Upload & Edit Online, 75% Commission – Instant Service

October 10, 2010

Print Files, Images and Documents to Any Printer Worldwide for Free With Printeranywhere’s New Service

Filed under: Remote Printing — Tags: , , , , , , , , — admin @ 3:24 am

New software and technology from PrinterAnywhere Inc. enables any user with an Internet connection to connect to any printer worldwide. Users are able to share their printer or connect to another printer, without standard networking equipment, by downloading and installing the free software at www.PrinterAnywhere.com

Mission, KS, July 19, 2006 -(PR.COM)- PrinterAnywhere Inc. recently launched a new service and technology allowing users worldwide to share printer resources for free. Users of the service only need an active Internet connection and the free software available for download at www.PrinterAnywhere.com. This printer sharing technology was developed to serve as a solution in situations where fax machines aren’t available, email is an unacceptable solution because of privacy issues, and even to serve as a simple solution to often complicated printer sharing on home networks.

PrinterAnywhere.com allows two users from anywhere in the world to connect to each other’s printers to share files or important documents that aren’t suitable for other available transfer methods. The service is entirely free for users to either send files to a printer, or to receive a file from someone to be printed by their equipment. Both users simply need to be connected to the Internet during the data exchange (not necessarily at the same time), and each user needs to install the PrinterAnywhere software, which can be downloaded for free from www.PrinterAnywhere.com.

It isn’t uncommon for business professionals to use printer services with copy/ print shops such as Kinkos. PrinterAnywhere allows them to send the printouts exactly where they’re needed without having to visit a store. Everything can be done from an Internet connection. There are several situations where the PrinterAnywhere service would be beneficial including:

1. There is no fax machine available or working for either the sender or receiver of the document.

2. There are multiple computers in a home or business that need to share one printer, and typical networking equipment isn’t working properly or is too difficult to set up.

3. Documents need to be transferred which are confidential in nature, and sending them via email poses a risk of the files being forwarded to unwanted parties.

4. A student’s printer may stop functioning when they need to print an important paper or report, and they need to access another printer immediately through a friend.

5. Documents can’t be properly transferred via email, because the two users have different and incompatible versions of software for reading the document.

6. The PrinterAnywhere service allows users to print documents and files from wireless hotspots such as Starbucks and Panera Restaurants, where printers may not be available.

This new technology freely available from PrinterAnywhere Inc. provides a new document transfer and printing option to business professionals, students, and home users equally. Anyone with an Internet connection can easily download the free PrinterAnywhere software, and immediately share their printer or print files to any available printer in the world.

For additional information on the PrinterAnywhere service or technology, contact Efraim Gershom at (913) 312-1370 or visit www.PrinterAnywhere.com.

PrinterAnywhere is a solution to print documents from a computer connected to the Internet to other people’s printers on the network. The service allows users to share their printers with others, or to print their documents to someone else’s printer that has been made available to the network. The PrinterAnywhere service and software is completely free to download and use, both to send and receive files without having to travel to a local print shop to pick up printed documents. For additional information on the PrinterAnywhere service or technology, contact Efraim Gershom at (913) 312-1370 or visit www.PrinterAnywhere.com

August 8, 2010

Quantum Ink emphasizes importance of quality, service.: An article from: Ink World

Filed under: Printer Management — Tags: , , , , , , , — admin @ 3:23 am

Product Description
This digital document is an article from Ink World, published by Rodman Publishing on March 1, 2008. The length of the article is 834 words. The page length shown above is based on a typical 300-word page. The article is delivered in HTML format and is available immediately after purchase. You can view it with any web browser.

Citation Details
Title: Quantum Ink emphasizes importance of quality, service.(ink, INC.)(Company overview)
Author: David Savastano
Publication: Ink World (Magazine/Journal)
Date: March 1, 2008
Publisher: Rodman Publishing
Volume: 14 Issu… More >>

Quantum Ink emphasizes importance of quality, service.: An article from: Ink World

July 24, 2010

Printer Service Contracts Tips for IT Service Providers

Filed under: Troubleshooting Printers — Tags: , , , , — admin @ 3:22 am

Do you offer printer service contracts as part of your computer repair, IT service or computer consulting business?

If so, you need to know how to structure these arrangements so you get paid appropriately for your time. When it comes to service contracts and particularly bundling in any type of hardware or peripheral repair, many new IT service providers lose their shirts when it comes to phone support. They want to offer high-quality service, so they make remote support via phone part of their printer service contracts… but often end up not charging enough and essentially giving away this valuable benefit free of charge to their clients.

The following 4 tips can help you structure printer service contracts so you’re not giving away too much free phone support.

Charge the Same for Phone Support as for On-Site Time. When you are billing at an hourly rate, make sure the hours you spend providing phone support are also billed at the same hourly rate. And when you are figuring phone support into your printer service contracts, do the math properly so your total cost per month is representative of the potential hours you will be spending with your clients both on-site and remotely. You can expect with remote support that your clients will be contacting you by phone, on your cell phone, and through e-mail. You can expect to be doing a lot of it, so you need to be compensated appropriately. If you aren’t correctly factoring in phone support, clients will take advantage of the convenience of instant advice and use phone support when it is not needed or in lieu of on-site time. Remember that Phone Support Takes a Lot of Time. Phone support takes as much time as other types of support, even for something as simple as printer troubleshooting. If you don’t include phone support as part of your printer service contracts, your hourly rate for printer troubleshooting by phone will be $0.00. Profitable businesses don’t charge $0.00 for their services. And if you think, “I can just give away phone support to my good clients,” or “I can just give it away this one time and everything will work out fine,” you’re fooling yourself. Giving Away Phone Support Hurts Your Overall Billable Service Revenue. When you give away free remote support with any type of service contracts, you take away your clients’ incentive to call you for billable on-site visits. Why would they pay you $100 on-site to handle printer problems when they can just call you up, get a few instructions and not have to pay anything? These clients will not stay good clients for long. Any person in their right mind will take advantage of and abuse the chance for free phone support. It’s just human nature to want to save money. Value Yourself. The information you provide over the phone is just as valuable as any other type of work you do on-site through printer service contracts. Giving away phone support will not boost your business, nor will it make good clients more loyal. Even your best clients over-use free advice and you’ll start to hemorrhage money.

In this brief article, we discussed 4 tips to make sure you set up your printer service contracts properly and profitably, so you get paid appropriately for all types of support. Learn more about how you can attract great, steady, high-paying clients with mutually-beneficial printer service contracts now at http://www.PrinterServiceContracts.com

Copyright (C), PrinterServiceContracts.com, All Rights Reserved

Joshua Feinberg is the author and editorial director of the Computer Consulting Kit Home Study Course, which helps computer consultants, VARs, integrators, solution providers, and managed services providers get more of the best, steady, high-paying small business (SMB) clients.

June 3, 2010

Evolution in Print Sales: The Changing Relationship Between the Sales Representative and the Customer Service Representative

Filed under: Print Sale — Tags: , , , , , , , , — admin @ 6:41 am

Product Description
Fundamental changes are occurring in the buyer/seller relationship, and these changes are customer driven. This second monograph in the PIA Account Development Series helps evaluate these changes and provoke ideas for unique customer benefits your own organization might provide…. More >>

Evolution in Print Sales: The Changing Relationship Between the Sales Representative and the Customer Service Representative

« Newer Posts

Powered by WordPress