All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.android.service.wallpapereffectsgeneration.WallpaperEffectsGenerationService Maven / Gradle / Ivy

/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.service.wallpapereffectsgeneration;

import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;

import android.annotation.CallSuper;
import android.annotation.MainThread;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.app.Service;
import android.app.wallpapereffectsgeneration.CinematicEffectRequest;
import android.app.wallpapereffectsgeneration.CinematicEffectResponse;
import android.app.wallpapereffectsgeneration.IWallpaperEffectsGenerationManager;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.util.Log;
import android.util.Slog;

/**
 * A service for handling wallpaper effects generation tasks. It must implement
 * (onGenerateCinematicEffect} method to generate response and call returnCinematicEffectResponse
 * to send the response.
 *
 * 

To extend this service, you must declare the service in your manifest file with the * {@link android.Manifest.permission#BIND_WALLPAPER_EFFECTS_GENERATION} permission and includes * an intent filter with the {@link #SERVICE_INTERFACE} action. For example:

*
 *     
 *         
 *             
 *                 
 *             
 *         
 *         
 *     
 * 
* * @hide */ @SystemApi public abstract class WallpaperEffectsGenerationService extends Service { /** * The {@link Intent} that must be declared as handled by the service. * *

The service must also require the * {@link android.permission#MANAGE_WALLPAPER_EFFECTS_GENERATION} * permission. * */ public static final String SERVICE_INTERFACE = "android.service.wallpapereffectsgeneration.WallpaperEffectsGenerationService"; private static final boolean DEBUG = false; private static final String TAG = "WallpaperEffectsGenerationService"; private Handler mHandler; private IWallpaperEffectsGenerationManager mService; private final IWallpaperEffectsGenerationService mInterface = new IWallpaperEffectsGenerationService.Stub() { @Override public void onGenerateCinematicEffect(CinematicEffectRequest request) { mHandler.sendMessage( obtainMessage( WallpaperEffectsGenerationService::onGenerateCinematicEffect, WallpaperEffectsGenerationService.this, request)); } }; /** * Called when the OS receives a request for generating cinematic effect. On receiving the * request, it extract cinematic information from the input and call * {@link #returnCinematicEffectResponse} with the textured mesh * and metadata wrapped in CinematicEffectResponse. * * @param request the cinematic effect request passed from the client. */ @MainThread public abstract void onGenerateCinematicEffect(@NonNull CinematicEffectRequest request); /** * Returns the cinematic effect response. Must be called when cinematic effect * response is generated and ready to be sent back. Otherwise the response won't be * returned. * * @param response the cinematic effect response returned from service provider. */ public final void returnCinematicEffectResponse(@NonNull CinematicEffectResponse response) { try { mService.returnCinematicEffectResponse(response); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } @CallSuper @Override public void onCreate() { super.onCreate(); if (DEBUG) { Log.d(TAG, "onCreate WallpaperEffectsGenerationService"); } mHandler = new Handler(Looper.getMainLooper(), null, true); IBinder b = ServiceManager.getService(Context.WALLPAPER_EFFECTS_GENERATION_SERVICE); mService = IWallpaperEffectsGenerationManager.Stub.asInterface(b); } @NonNull @Override public final IBinder onBind(@NonNull Intent intent) { if (DEBUG) { Log.d(TAG, "onBind WallpaperEffectsGenerationService"); } if (SERVICE_INTERFACE.equals(intent.getAction())) { return mInterface.asBinder(); } Slog.w(TAG, "Tried to bind to wrong intent (should be " + SERVICE_INTERFACE + ": " + intent); return null; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy