diff --git a/telecine/src/main/java/com/jakewharton/telecine/Api24OrGreaterServiceComponent.java b/telecine/src/main/java/com/jakewharton/telecine/Api24OrGreaterServiceComponent.java new file mode 100644 index 0000000..b4cff41 --- /dev/null +++ b/telecine/src/main/java/com/jakewharton/telecine/Api24OrGreaterServiceComponent.java @@ -0,0 +1,11 @@ +package com.jakewharton.telecine; + +import android.app.Service; + +import dagger.Subcomponent; +import dagger.android.DispatchingAndroidInjector; + +@Subcomponent(modules = Api24OrGreaterServiceModule.class) +public interface Api24OrGreaterServiceComponent { + DispatchingAndroidInjector injector(); +} \ No newline at end of file diff --git a/telecine/src/main/java/com/jakewharton/telecine/Api24OrGreaterServiceModule.java b/telecine/src/main/java/com/jakewharton/telecine/Api24OrGreaterServiceModule.java new file mode 100644 index 0000000..6d83eea --- /dev/null +++ b/telecine/src/main/java/com/jakewharton/telecine/Api24OrGreaterServiceModule.java @@ -0,0 +1,9 @@ +package com.jakewharton.telecine; + +import dagger.Module; +import dagger.android.ContributesAndroidInjector; + +@Module +public abstract class Api24OrGreaterServiceModule { + @ContributesAndroidInjector() abstract TelecineTileService bindTelecineTileService(); +} diff --git a/telecine/src/main/java/com/jakewharton/telecine/TelecineApplication.java b/telecine/src/main/java/com/jakewharton/telecine/TelecineApplication.java index ed03239..b689879 100644 --- a/telecine/src/main/java/com/jakewharton/telecine/TelecineApplication.java +++ b/telecine/src/main/java/com/jakewharton/telecine/TelecineApplication.java @@ -3,23 +3,32 @@ import android.app.Activity; import android.app.Application; import android.app.Service; + import com.bugsnag.android.BeforeNotify; import com.bugsnag.android.Bugsnag; import com.bugsnag.android.Error; + +import javax.inject.Inject; + import dagger.android.AndroidInjector; import dagger.android.DispatchingAndroidInjector; import dagger.android.HasActivityInjector; import dagger.android.HasServiceInjector; -import javax.inject.Inject; import timber.log.Timber; public final class TelecineApplication extends Application implements HasActivityInjector, HasServiceInjector { @Inject DispatchingAndroidInjector dispatchingActivityInjector; @Inject DispatchingAndroidInjector dispatchingServiceInjector; + private TelecineComponent telecineComponent; + + public TelecineComponent telecineComponent() { + return telecineComponent; + } @Override public void onCreate() { - DaggerTelecineComponent.builder().application(this).build().inject(this); + telecineComponent = DaggerTelecineComponent.builder().application(this).build(); + telecineComponent.inject(this); super.onCreate(); if (BuildConfig.DEBUG) { diff --git a/telecine/src/main/java/com/jakewharton/telecine/TelecineComponent.java b/telecine/src/main/java/com/jakewharton/telecine/TelecineComponent.java index cd0216d..a889a24 100644 --- a/telecine/src/main/java/com/jakewharton/telecine/TelecineComponent.java +++ b/telecine/src/main/java/com/jakewharton/telecine/TelecineComponent.java @@ -1,15 +1,19 @@ package com.jakewharton.telecine; import android.app.Application; + +import javax.inject.Singleton; + import dagger.BindsInstance; import dagger.Component; import dagger.android.AndroidInjectionModule; -import javax.inject.Singleton; @Singleton @Component(modules = { AndroidInjectionModule.class, TelecineModule.class }) interface TelecineComponent { void inject(TelecineApplication app); + Api24OrGreaterServiceComponent api24OrGreaterServiceComponent(); + @Component.Builder interface Builder { @BindsInstance Builder application(Application application); diff --git a/telecine/src/main/java/com/jakewharton/telecine/TelecineModule.java b/telecine/src/main/java/com/jakewharton/telecine/TelecineModule.java index cf4a475..91d1a96 100644 --- a/telecine/src/main/java/com/jakewharton/telecine/TelecineModule.java +++ b/telecine/src/main/java/com/jakewharton/telecine/TelecineModule.java @@ -3,13 +3,17 @@ import android.app.Application; import android.content.ContentResolver; import android.content.SharedPreferences; + import com.google.android.gms.analytics.GoogleAnalytics; import com.google.android.gms.analytics.Tracker; + +import java.util.Map; + +import javax.inject.Singleton; + import dagger.Module; import dagger.Provides; import dagger.android.ContributesAndroidInjector; -import java.util.Map; -import javax.inject.Singleton; import timber.log.Timber; import static android.content.Context.MODE_PRIVATE; @@ -109,5 +113,4 @@ static Integer provideVideoSizePercentage(@VideoSizePercentage IntPreference pre @ContributesAndroidInjector abstract TelecineService contributeTelecineService(); - @ContributesAndroidInjector abstract TelecineTileService contributeTelecineTileService(); } diff --git a/telecine/src/main/java/com/jakewharton/telecine/TelecineTileService.java b/telecine/src/main/java/com/jakewharton/telecine/TelecineTileService.java index aff58e9..b0efa6a 100644 --- a/telecine/src/main/java/com/jakewharton/telecine/TelecineTileService.java +++ b/telecine/src/main/java/com/jakewharton/telecine/TelecineTileService.java @@ -3,9 +3,11 @@ import android.annotation.TargetApi; import android.service.quicksettings.Tile; import android.service.quicksettings.TileService; + import com.google.android.gms.analytics.HitBuilders; -import dagger.android.AndroidInjection; + import javax.inject.Inject; + import timber.log.Timber; import static android.os.Build.VERSION_CODES.N; @@ -15,7 +17,7 @@ public final class TelecineTileService extends TileService { @Inject Analytics analytics; @Override public void onCreate() { - AndroidInjection.inject(this); + ((TelecineApplication) getApplication()).telecineComponent().api24OrGreaterServiceComponent().injector().inject(this); super.onCreate(); }