Git Product home page Git Product logo

aepsdk-edgemedia-android's Introduction

Adobe Streaming Media for Edge Network extension - Android

Maven Central CircleCI Code Coverage

About this project

The Adobe Streaming Media for Edge Network extension sends data about audio and video consumption on your streaming applications to the Adobe Experience Platform Edge Network. This enables capabilities for measurement, analysis, and activation with media data across the Adobe Experience Cloud solutions when using the Adobe Experience Platform Mobile SDK and the Edge Network extension.

Installation

To install and start using the Media for Edge Network extension, check out the getting started guide and the API reference.

Migrating from Media Analytics

Please refer to the Migrating from Media to Media for Edge Network guide.

Development

Open the project

To open and run the project, open the code/settings.gradle.kt file in Android Studio

Run the test application

To configure and run the test app for this project, follow the getting started guide for the test app.

Code format

This project uses the code formatting tools Spotless with Prettier. Formatting is applied when the project is built from Gradle and is checked when changes are submitted to the CI build system.

Prettier requires Node version 10+ To enable the Git pre-commit hook to apply code formatting on each commit, run the following to update the project's git config core.hooksPath:

make init

Related Projects

Project Description
Core extensions The Mobile Core represents the foundation of the Adobe Experience Platform Mobile SDK.
Edge Network extension The Edge Network extension allows you to send data to the Adobe Edge Network from a mobile application.
Identity for Edge Network The Identity for Edge Network extension enables identity management from a mobile app when using the Edge Network extension.
Assurance extension The Assurance extension enables validation workflows for your SDK implementation.

Documentation

Information about Adobe Streaming Media for Edge Network implementation, API usage, and architecture can be found in the Documentation directory.

Learn more about Media for Edge Network and all other Mobile SDK extensions in the official Adobe Experience Platform Mobile SDK documentation.

Contributing

Contributions are welcomed! Read the Contributing Guide for more information.

Licensing

This project is licensed under the Apache V2 License. See LICENSE for more information.

aepsdk-edgemedia-android's People

Contributors

addb avatar cacheung avatar emdobrin avatar kevinlind avatar praveek avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aepsdk-edgemedia-android's Issues

Update MediaRealTimeSession logic to handle edge workflow

Task description

  • Update RealTimeSession class to dispatch XDM formatted experience events instead of mediaCollection network requests
  • Queue events after dispatching sessionStart event till backendSessionId is returned in the edge response handle events
  • Cache and append sessionID to mediaCollection XDM for all the requests after sessionStart, and attach the other xdm default parameters for mediaState
  • Handle Edge success / error response for sessionStart
  • Refer MediaRealTimeSession.swift in aepsdk-edgemedia-ios project for code parity and also refactor based on swift code
  • Add and update tests for the above changes

Refactor functional and integration tests to use new test utils

Task description

The existing functional and integration tests should be refactored to use the newly available common test utilities available in: https://github.com/adobe/aepsdk-testutils-android

With the following items covered:

  1. Any changes required to the common test utils should be opened as a PR to the test utils repo, optimally in a non-breaking change manner (although before the 1.0.0 release of the test utils, larger changes should be ok)
  2. Manual dictionary/array property assertions should be refactored to use the JSON comparison tool
  3. Test utilities that exist in the test utils repo should be used over equivalent test util classes defined locally

Additional implementation details or code snippet(s)

No response

Implement Android TestApp with VideoPlayer using Kotlin

Task description

  • Create a Android TestApp using Kotlin
  • Add support for VideoPlayer similar to the current Java App
  • Add support to listen for Player events and call EdgeMedia APIs
  • Reuse VideoPlayer.java, MediaAnalyticsProvider classes if needed to have a quicker setup
  • Add a space to connect to Assurance
  • If possible keep UI similar to iOS testApp in aepsdk-edgemedia-ios project

Cleanup Rules Engine and State Machine Logic for EdgeMedia

Task description

Do following for all the classes involved in RulesEnging and State Machine logic (MediaRule, MediaCollectionTracker, MediaRuleEngine)

  1. Verify and update any Class name/constants for edgemedia
  2. Make any improvements based on code in aepsdk-edgemedia-ios project
  3. Check for internal functions access and make them private if applicable
  4. Add more tests if necessary

Update and Add Functional Tests

Task Description

  • Add new helpers to simplify the test cases, similar to iOS
  • Update the functional test asserts for edgemedia experience events
  • Add new functional tests
  • Refer aepsdk-edgemedia-ios project for all the test cases

repo setup

  • set up the dev branch based of media codebase
  • renaming from Media to Edge Media where it applies - package name, docs, source (see iOS)
  • verify CI/CD and other scripts work for testing, formatting, code cov etc

Add EventType and EventSource to Core

Expected Behaviour

Add the needed EventType and EventSource string to Core so they are common and available to all extensions.

Possible additions, but need to evaluate final values:

  • EventType: com.adobe.eventType.edgeMedia
  • EventSource: com.adobe.eventSource.createTracker
  • EventSource: com.adobe.eventSource.trackMedia

Actual Behaviour

Reproduce Scenario (including but not limited to)

Steps to Reproduce

Platform and Version

Sample Code that illustrates the problem

Logs taken while reproducing problem

public APIs, helper classes and constants

  • Rename package to com.adobe.marketing.mobile.edge.media
  • No changes should be surfaced in the public API/constant names
  • Check iOS if the keys for Media.create* APIs have been updated to match the new XDM like keys

E2E validation

Task description

  • Run some manual test using the testApp
  • Verify with Assurance that the hits are being sent to the Edge
  • Verify the data has reached the expected Dataset
  • Look at the CJA dashboard to verify that the Analytics report for the testing session

Implement Custom Ping Interval Support

Task description

  • Clean up current code that handles enableGranularAdTracking tracker config
  • Implement logic to support custom ping interval for main content and ad content
  • Support the custom ping interval via tracker configuration similar to enableGranularAdTracking setting
  • Maintain code and constant name parity with aepsdk-edgemedia-ios project
  • Refactor code similar to aepsdk-edgemedia-ios](https://github.com/adobe/aepsdk-edgemedia-ios) project
  • Add unit and functional tests

Allowed values:

1 Second <= CustomAdPingInterval <= 10
10 Second <= CustomMainPingInterval <= 50

Update Documentation and Add Migration Guide

Task description

  • Update getting-started, api-referece pages for EdgeMedia workflow
  • Add migration-guide forMedia to EdgeMedia
    • Include migration for deprecated APIs in Media to Edge Media, which won't include the deprecated registerExtension and async createTracker APIs
  • Refer aepsdk-edgemedia-ios project for migration guide format

Remove APIs deprecated in Media 2.x

Remove the deprecated public APIs in Media class.

  • public static void registerExtension()
  • public static void createTracker(@NonNull final AdobeCallback<MediaTracker> callback)
  • public static void createTracker(@Nullable final Map<String, Object> config, @NonNull final AdobeCallback<MediaTracker> callback)

update MediaExtension and listeners

  • Update event type/sources, clean up legacy items
  • Update MediaExtension class to handle edge workflow and listen to new events, including Edge response listeners

Convert all the public API numeric fields to int

Task description

Currently we have double, long for fields like playhead, length, timeToStart.
As per the XDM schema and the discussion with backend, those numeric fields should be updated to int

Affected APIs

  • updatePlayhead
  • all the createMediaObject APIs

DoD:

  • Update the API signatures
  • Refactor internal mapper to remove the conversion
  • Update the respective tests
  • Update migration-guide.md document

Additional implementation details or code snippet(s)

No response

Add MediaCollection XDM Data model classes

Task description

  1. Generate the data model classes for MediaCollection XDM fieldgroup using xdmTool (preferable to have the classes start with "XDM" prefix for easy read/find.
  2. Add constructors for simple init like aepsdk-edgemedia-ios project.
  3. Add unit tests to verify encoding/decoding and make sure keys are formatted as expected.

Add mediaState and config shared state listener

  • Adds listener for config shared state updates and update MediaState
  • Media config contains: app (sdk) version, channel, player name (e.g. edgemedia.channel / edgemedia.playerName)
  • Remove properties no longer used: config privacy status, media server name(s), analytics or identity values
  • MediaState / listener tests

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.