2011-05-25 12 views

उत्तर

1

संक्षिप्त उत्तर हाँ है। लंबा जवाब http://ikaruga2.wordpress.com/2011/06/15/video-live-wallpaper-part-1/

+0

धन्यवाद, मुझे पता था और मैंने तदनुसार ikaruga2 ट्यूटोरियल बनाया है। मुद्दा यह है कि ट्यूटोरियल, जो वास्तव में बहुत अच्छा है, कुछ समस्याएं खुलता है, उनमें से एक ऑडियो है ... LISA –

+0

आपको ऑडियो की भी आवश्यकता है? यह काफी चुनौती है। प्रलेखन पढ़ें (यह मुझे पता है कि ऑडियो में थोड़ा सा धक्का है) और आपको एक विचार मिल सकता है। आपको यह सोचना होगा कि, उदाहरण के लिए, अन्य संसाधनों द्वारा भी ऑडियो का उपयोग किया जा सकता है और यह इसे प्रबंधित करने के लिए काफी जटिल कार्य है। शुभकामनाएं और मुझे उम्मीद है कि आप सफल होंगे। पी.एस. मुझे लगता है कि आप जानते हैं कि यह बेहद बैटरी गहन ऐप होगा, है ना? – MayTheSchwartzBeWithYou

+0

हाँ यह एक चुनौती है ... यही कारण है कि मैं एक वैकल्पिक दृष्टिकोण की तलाश में हूं। फिर भी धन्यवाद! लिसा –

0

बस बॉक्स के बाहर सोचने के लिए, क्या एक काम कर रहे वीडियो प्लेयर को लेना संभव है और एंड्रॉइड में जावा विंडो के तहत इसे फिर से पैरेंट करना संभव है? मैंने इसे लिनक्स या एंड्रॉइड में नहीं किया है, लेकिन विंडोज़ के तहत एक चल रहे एप्लिकेशन के विंडो हैंडल को प्राप्त करना और इसे जावा फ्रेम का बच्चा बनाना संभव है, जिसके परिणामस्वरूप अन्य एप्लिकेशन की विंडो आपके जावा के हिस्से की तरह दिखती है आवेदन।

+0

वास्तव में नहीं पता ... –

2

बस वीडियो व्यू के बजाय मीडियाप्लेयर का उपयोग करें और MediaPlayer.setDisplay के बजाय MediaPlayer.setSurface का उपयोग करें। यदि आप सेटप्स्प्ले का उपयोग करते हैं तो MediaPlayer स्क्रीन को रखने के लिए SurfaceHolder को बताने के लिए कोशिश करता है जिस पर लाइववैलपेपर के लिए अनुमति नहीं है और एक त्रुटि फेंक देगी।

मैं WebM/vpx8 वीडियो का उपयोग, लेकिन यह जो कुछ भी MediaPlayer का समर्थन करता है के साथ काम करना चाहिए

package com.justinbuser.nativecore; 

import android.media.MediaPlayer; 
import android.service.wallpaper.WallpaperService; 
import android.view.SurfaceHolder; 
import com.justinbuser.android.Log; 

public class VideoWallpaperService extends WallpaperService 
    { 
     protected static int    playheadTime = 0; 

     @Override 
     public Engine onCreateEngine() 
      { 
       return new VideoEngine(); 
      } 

     class VideoEngine extends Engine 
      { 

       private final String  TAG  = getClass().getSimpleName(); 
       private final MediaPlayer mediaPlayer; 
       public VideoEngine() 
        { 
         super(); 
         Log.i(TAG, "(VideoEngine)"); 
         mediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.wallpapervideo); 
         mediaPlayer.setLooping(true); 
        } 

       @Override 
       public void onSurfaceCreated(SurfaceHolder holder) 
        { 
         Log.i(TAG, "onSurfaceCreated"); 
         mediaPlayer.setSurface(holder.getSurface()); 
         mediaPlayer.start(); 
        } 

       @Override 
       public void onSurfaceDestroyed(SurfaceHolder holder) 
        { 
         Log.i(TAG, "(INativeWallpaperEngine): onSurfaceDestroyed"); 
         playheadTime = mediaPlayer.getCurrentPosition(); 
         mediaPlayer.reset(); 
         mediaPlayer.release(); 
        } 
     } 

} 
0

मैं जस्टिन Buser समाधान की कोशिश की है (बस रेस में वीडियो फ़ाइल/कच्चे डाल) और यह काम नहीं करता (परीक्षण किया एपीआई 16 डिवाइस पर), https://github.com/thorikawa/AndroidExample/tree/master/MovieLiveWallpaper/ पर एक समान कोड भी मिला है; यह या तो काम नहीं करता है। एकमात्र समाधान एनडीके के साथ एफएफएमपीईजी का उपयोग करना प्रतीत होता है। उदाहरण: https://github.com/frankandrobot