Android - Video grabbing protocol¶
- Android TV
- Fire TV
- Android mobile
Suitest instrumentation library for Android applications can grab video properties in case your application is using
Android's VideoView
for playing video content. However, if you have implemented your own player or used an
external that is not based on the VideoView
, Suitest will not be able to recognize the video.
If this is your case, we suggest to adopting the Suitest Video protocol. You will have to ask the developer of the app to conform to the protocol.
Integration¶
You will need to add a link for Suitest, that will match the video View
with its controller.
You can do so by calling:
SuitestInstrumentalApplication.addVideoControllerAndView(SuitestVideoController videoController, View view);
The second parameter is the View
to be tested (in a typical implementation, that would be a SurfaceView
).
The first parameter is an interface
that will help Suitest verify the state of the View
. It has the following methods:
interface SuitestVideoController {
int getDuration();
int getCurrentPosition();
Util.VideoInfo.State getState();
String getUrl();
}
Feel free to implement this interface in a way that suits your implementation and coding style.
Then, when the video View
is created, register it with Suitest and you are ready to test your video implementation.
Using SurfaceView
as an example, you can register the View
and controller within surfaceCreated()
method of SurfaceHolder.Callback
:
final SurfaceHolder surfaceHolder = getHolder();
if (surfaceHolder != null) {
surfaceHolder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
SuitestInstrumentalApplication.addVideoControllerAndView(getSuitestVideoController(),getSurfaceView());
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
SuitestInstrumentalApplication.removeVideoController(getSurfaceView());
}
});
}
When the View
is destroyed, unregister its controller (as shown above in surfaceDestroyed
), in order to prevent possible memory leaks.