# Android Media And Image Expert

> Use when loading images with Coil/Glide, implementing video playback with Media3/ExoPlayer, or handling media metadata in Android.

- **Type:** Skill
- **Install:** `agentstack add skill-prasad-vennam-awesome-android-ai-agent-skills-android-media-and-image-expert`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [prasad-vennam](https://agentstack.voostack.com/s/prasad-vennam)
- **Installs:** 0
- **Category:** [Content & Media](https://agentstack.voostack.com/c/content-and-media)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [prasad-vennam](https://github.com/prasad-vennam)
- **Source:** https://github.com/prasad-vennam/Awesome-Android-AI-Agent-Skills/tree/main/skills/android-media-and-image-expert

## Install

```sh
agentstack add skill-prasad-vennam-awesome-android-ai-agent-skills-android-media-and-image-expert
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Android Media & Image Excellence 🎞️🖼️

Professional strategies for high-performance image loading, video streaming, and media management in modern Android applications.

## ⚡ When to Use
- **Image Loading**: Performance-first loading with Coil (Compose-native).
- **Video Playback**: Streaming using ExoPlayer or the new Media3 library.
- **Media Management**: Displaying local media (Photos/Videos) with proper metadata.
- **Image Optimization**: Sizing, Caching, and format support (WebP, AVIF).
- **Audio Playback**: Playing background music or voice notes.

## 🖼️ Image Loading with Coil (The Android Standard)

- **Rule**: ALWAYS use **Coil** for Compose. It's lightweight, efficient, and uses Coroutines.
- **Rule**: NEVER load the full image if displayed in a small box. Use `size(Size.ORIGINAL)` or explicit `size()`.

### 1. The `AsyncImage` Composable
```kotlin
AsyncImage(
    model = ImageRequest.Builder(LocalContext.current)
        .data(url)
        .crossfade(true)
        .placeholder(R.drawable.loading)
        .error(R.drawable.error)
        .build(),
    contentDescription = null,
    modifier = Modifier.clip(CircleShape)
)
```

### 2. Best Practices
- [ ] **Disk Caching**: Ensure `ImageLoader` is configured to cache properly.
- [ ] **Memory Caching**: Control cache size for apps with many images.
- [ ] **SVGs**: Use `SvgDecoder` for sharp, vector-based illustrations.

## 🎥 Video Playback (Media3 / ExoPlayer)

- **Rule**: Use the **Media3** library as the modern wrapper for ExoPlayer.
- **Lifecycle**: Ensure the player is released in `onDispose` to avoid memory leaks and battery drain.

### 1. Basic Player Setup
```kotlin
val exoPlayer = remember {
    ExoPlayer.Builder(context).build().apply {
        setMediaItem(MediaItem.fromUri(url))
        prepare()
    }
}

AndroidView(
    factory = { ctx ->
        PlayerView(ctx).apply {
            player = exoPlayer
        }
    },
    update = { _ -> },
    modifier = Modifier.fillMaxWidth()
)
```

## 🚀 Media Optimization Checklist

- [ ] **Format Support**: Prefer **WebP** or **AVIF** over JPEG for small payloads.
- [ ] **Bitmap Downsampling**: Only load the necessary resolution into memory.
- [ ] **Hardware Acceleration**: Enable hardware decoding for 4K/HDR videos.
- [ ] **Placeholder strategy**: Use unified placeholders for a smoother UI.

## 📏 UI Performance & UX

- **Shimmer Loading**: Use a themed shimmer effect (skeleton) while media is loading.
- **Error States**: Always provide a "Retry" button or clear error icon for failed media.
- **Audio Focus**: Ensure your app respects other audio sources (Pause media when music starts elsewhere).

## 🧪 Testing and Verification

- **Slow Network Testing**: Use ADB or a proxy to test UI behavior under poor network conditions.
- **Memory Profiler**: Verify that media is being cleared from the heap when screens are closed.
- **Accessibility**: Provide `contentDescription` for all meaningful images.

## 🔗 Related Resources
- [Android Media3 Guide](https://developer.android.com/guide/topics/media/media3)
- [Coil Documentation](https://coil-kt.github.io/coil/)
- [Image Optimization FAQ](https://developer.android.com/topic/performance/graphics)

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [prasad-vennam](https://github.com/prasad-vennam)
- **Source:** [prasad-vennam/Awesome-Android-AI-Agent-Skills](https://github.com/prasad-vennam/Awesome-Android-AI-Agent-Skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-prasad-vennam-awesome-android-ai-agent-skills-android-media-and-image-expert
- Seller: https://agentstack.voostack.com/s/prasad-vennam
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
