Update the sample print service with advanced print options activity.

Change-Id: I4ffd2b56ccfcb0820461d6a003195948a0eabb85
diff --git a/PrintService/AndroidManifest.xml b/PrintService/AndroidManifest.xml
index 69870cd..6b6dd5c 100644
--- a/PrintService/AndroidManifest.xml
+++ b/PrintService/AndroidManifest.xml
@@ -24,7 +24,8 @@
         </service>
         <activity
             android:name=".SettingsActivity"
-            android:label="@string/settings_activity_label">
+            android:label="@string/settings_activity_label"
+            >
         </activity>
         <activity
             android:name=".AddPrintersActivity"
@@ -36,6 +37,12 @@
             android:exported="false">
         </activity>
 
+        <activity
+            android:name=".CustomPrintOptionsActivity"
+            android:exported="true"
+            android:permission="android.permission.START_PRINT_SERVICE_CONFIG_ACTIVITY">
+        </activity>
+
     </application>
 
 </manifest>
diff --git a/PrintService/res/xml/printservice.xml b/PrintService/res/xml/printservice.xml
index 667bef7..690a545 100644
--- a/PrintService/res/xml/printservice.xml
+++ b/PrintService/res/xml/printservice.xml
@@ -1,3 +1,4 @@
 <print-service  xmlns:android="http://schemas.android.com/apk/res/android"
      android:settingsActivity="foo.bar.printservice.SettingsActivity"
-     android:addPrintersActivity="foo.bar.printservice.AddPrintersActivity"/>
+     android:addPrintersActivity="foo.bar.printservice.AddPrintersActivity"
+     android:advancedPrintOptionsActivity="foo.bar.printservice.CustomPrintOptionsActivity"/>
diff --git a/PrintService/src/foo/bar/printservice/CustomPrintOptionsActivity.java b/PrintService/src/foo/bar/printservice/CustomPrintOptionsActivity.java
new file mode 100644
index 0000000..67eda45
--- /dev/null
+++ b/PrintService/src/foo/bar/printservice/CustomPrintOptionsActivity.java
@@ -0,0 +1,55 @@
+package foo.bar.printservice;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.print.PageRange;
+import android.print.PrintAttributes;
+import android.print.PrintAttributes.MediaSize;
+import android.print.PrintJobInfo;
+import android.print.PrinterCapabilitiesInfo;
+import android.print.PrinterInfo;
+import android.printservice.PrintService;
+
+public class CustomPrintOptionsActivity extends Activity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        PrintJobInfo printJobInfo = (PrintJobInfo) getIntent().getParcelableExtra(
+                PrintService.EXTRA_PRINT_JOB_INFO);
+        PrinterInfo printerInfo = (PrinterInfo) getIntent().getParcelableExtra(
+                "android.intent.extra.print.EXTRA_PRINTER_INFO");
+
+        PrinterCapabilitiesInfo capabilities = printerInfo.getCapabilities();
+
+        PrintAttributes attributes = new PrintAttributes.Builder()
+                .setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME)
+                .setMediaSize(MediaSize.ISO_A5)
+                .setResolution(capabilities.getResolutions().get(0))
+                .build();
+
+        PrintJobInfo.Builder builder = new PrintJobInfo.Builder(printJobInfo);
+        builder.setAttributes(attributes);
+        builder.setCopies(2);
+        builder.setAttributes(attributes);
+        builder.setPages(new PageRange[] {new PageRange(1, 1), new PageRange(3, 3)});
+        builder.putAdvancedOption("EXTRA_FIRST_ADVANCED_OPTION", "OPALA");
+        builder.putAdvancedOption("EXTRA_SECOND_ADVANCED_OPTION", 1);
+
+        PrintJobInfo newPrintJobInfo = builder.build();
+
+        Intent result = new Intent();
+        result.putExtra(PrintService.EXTRA_PRINT_JOB_INFO, newPrintJobInfo);
+        setResult(Activity.RESULT_OK, result);
+
+        finish();
+    }
+}
diff --git a/PrintService/src/foo/bar/printservice/MyPrintService.java b/PrintService/src/foo/bar/printservice/MyPrintService.java
index 884fbe9..f04d86c 100644
--- a/PrintService/src/foo/bar/printservice/MyPrintService.java
+++ b/PrintService/src/foo/bar/printservice/MyPrintService.java
@@ -125,6 +125,7 @@
         if (printJob.isQueued()) {
             printJob.start();
         }
+        
         Intent intent = new Intent(this, MyDialogActivity.class);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         intent.putExtra(INTENT_EXTRA_PRINT_JOB_ID, printJob.getId());
@@ -342,7 +343,7 @@
                 String name = "Printer " + i;
                 PrinterInfo printer = new PrinterInfo
                         .Builder(generatePrinterId(name), name, (i % 2 == 1)
-                        ? PrinterInfo.STATUS_UNAVAILABLE : PrinterInfo.STATUS_IDLE)
+                                ? PrinterInfo.STATUS_UNAVAILABLE : PrinterInfo.STATUS_IDLE)
                         .build();
                 mFakePrinters.add(printer);
             }
@@ -418,13 +419,15 @@
         }
 
         private void addSecondBatchFakePrinters() {
-//            List<PrinterInfo> printers = mFakePrinters.subList(mFakePrinters.size() / 2,
-//                    mFakePrinters.size());
-//            final int printerCount = mFakePrinters.size();
-//            for (int i = printerCount - 1; i >= 0; i--) {
-//                printers.add(mFakePrinters.get(i));
-//            }
-//            addPrinters(printers);
+            List<PrinterInfo> printers = mFakePrinters.subList(0, mFakePrinters.size() / 2
+                    /* mFakePrinters.size() / 2, mFakePrinters.size()*/);
+            final int printerCount = mFakePrinters.size();
+            for (int i = printerCount - 1; i >= 0; i--) {
+                PrinterInfo printer = new PrinterInfo.Builder(mFakePrinters.get(i))
+                        .setStatus(PrinterInfo.STATUS_UNAVAILABLE).build();
+                printers.add(printer);
+            }
+            addPrinters(printers);
         }
 
         private PrinterInfo findPrinterInfo(PrinterId printerId) {