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) {