1/* 2 * (c) Copyright 2016 Samsung Electronics 3 * (c) Copyright 2016 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17package com.android.printservice.recommendation.plugin.samsung; 18 19import android.content.Context; 20import android.net.nsd.NsdServiceInfo; 21 22import androidx.annotation.NonNull; 23 24import com.android.printservice.recommendation.PrintServicePlugin; 25import com.android.printservice.recommendation.R; 26import com.android.printservice.recommendation.util.MDNSFilteredDiscovery; 27 28import java.util.HashSet; 29import java.util.Set; 30 31public class SamsungRecommendationPlugin implements PrintServicePlugin { 32 private static final Set<String> ALL_MDNS_SERVICES = new HashSet<String>() {{ 33 addAll(PrinterFilterMopria.MOPRIA_MDNS_SERVICES); 34 addAll(PrinterFilterSamsung.SAMSUNG_MDNS_SERVICES); 35 }}; 36 37 private final @NonNull Context mContext; 38 private final @NonNull MDNSFilteredDiscovery mMDNSFilteredDiscovery; 39 40 private final @NonNull PrinterFilterSamsung mPrinterFilterSamsung = new PrinterFilterSamsung(); 41 private final @NonNull PrinterFilterMopria mPrinterFilterMopria = new PrinterFilterMopria(); 42 43 public SamsungRecommendationPlugin(@NonNull Context context) { 44 mContext = context; 45 mMDNSFilteredDiscovery = new MDNSFilteredDiscovery(context, ALL_MDNS_SERVICES, 46 (NsdServiceInfo nsdServiceInfo) -> 47 mPrinterFilterSamsung.matchesCriteria(nsdServiceInfo) || 48 mPrinterFilterMopria.matchesCriteria(nsdServiceInfo)); 49 } 50 51 @Override 52 public int getName() { 53 return R.string.plugin_vendor_samsung; 54 } 55 56 @Override 57 public @NonNull CharSequence getPackageName() { 58 return mContext.getString(R.string.plugin_package_samsung); 59 } 60 61 @Override 62 public void start(@NonNull PrinterDiscoveryCallback callback) throws Exception { 63 mMDNSFilteredDiscovery.start(callback); 64 } 65 66 @Override 67 public void stop() throws Exception { 68 mMDNSFilteredDiscovery.stop(); 69 } 70} 71