Q:

Call extended inner class of another class?

In order to implement a watchface for Android wear, I am using CanvasWatchFaceService. This uses an Engine that makes changes on the canvas. A sample code is shown below: 
public class WatchFace extends CanvasWatchFaceService {

    @Override
    public MyEngine onCreateEngine() {
        return new MyEngine();
    }

    private class MyEngine extends CanvasWatchFaceService.Engine { ... }
    // The above line is basically:
    // private class MyEngine extends WatchFace.Engine { ... }
}

Suppose I want to have multiple CanvasWatchFaceService classes that use only one Engine. This is because the code within Engine is reusable for my purpose.
How would this be possible? I can't seem to be able to take out MyEngine on its own since an enclosing instance of type CanvasWatchFaceService must be in scope. For the same reason, also cannot make it static.
What would be the best way to approach this problem?
----------------------------UPDATE:---------------------------
Here's what I have done so far that does not give me a syntax error:
 public class WatchFace2 extends CanvasWatchFaceService {

    @Override
    public WatchFace.MyEngine onCreateEngine() {
        return new WatchFace(WatchFace2.this).onCreateEngine();
    }

}

, and added a contructor for WatchFace that takes in the given CanvasWatchFaceService as context, necessary for the inside working of MyEngine.
This runs fine but there are semantic errors regarding getPackageName(). Error does not show break at any line from my code.

A:

public class WatchFace extends CanvasWatchFaceService {

    @Override
    public MyEngine onCreateEngine() {
        return new MyEngine();
    }

    private class MyEngine extends CanvasWatchFaceService.Engine { ... }
    // The above line is basically:
    // private class MyEngine extends WatchFace.Engine { ... }
}

then extend WatchFace
public class WatchFace1 extends WatchFace{ 
}

public class WatchFace2 extends WatchFace{
}

