2013-08-30 64 views
0

我正在运行文本到语音代码,但现在我的新要求是提供“暂停”功能。我读了很多SO问题,发现我必须将数据写入文件,并且必须使用媒体播放器类来播放文件。以下是我的代码。在我的应用程序中使用媒体播放器

public void speak(String text) 
    { 
     HashMap<String,String> map = new HashMap<String,String>(); 
     map.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, text); 

     tts.synthesizeToFile(text, map,"ttsFile.wav"); 


     //tts.speak(text, TextToSpeech.QUEUE_FLUSH, null); 
    } 

这里我有2个问题。

  1. 我不想打开媒体播放器播放的文件,文件应该在应用程序中播放与媒体播放器控件(就像你如何设置videoView.setMediaController();VideoView)。我怎样才能做到这一点?请举例吗?

  2. 是否有任何“缓存”的地方来保存上述文件,所以一旦关闭应用程序将被删除?

请帮忙。

+0

你有没有尝试使用表面视图,将持有你的媒体播放器,更多信息,你可以检查这个http:// android-er .blogspot.in/2012/03/play-media-on-surfaceview-using.html – Shrikant

回答

0

你可以做这样的事情:

创建应用程序中的视频播放器:

VideoPlayerActivity.java:

package com.camera.manual; 

import android.app.Activity; 
import android.content.pm.ActivityInfo; 
import android.net.Uri; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.MediaController; 
import android.widget.Toast; 
import android.widget.VideoView; 


public class VideoPlayerActivity extends Activity { 

    private boolean mResumed = false; 
    private boolean mFocused = false; 
    private boolean mControlResumed = false; 
    private VideoView videoView = null; 
    private int stopPosition = 0; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setTheme(R.style.Theme_TransparentVideo); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 

     setContentView(R.layout.video_view); 

     videoView =(VideoView)findViewById(R.id.myvideoview); 
     MediaController mediaController= new MediaController(this); 
     mediaController.setAnchorView(videoView);   
     Uri uri=Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.slow);   
     videoView.setMediaController(mediaController); 
     videoView.setVideoURI(uri);   
     videoView.requestFocus(); 
     videoView.start(); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     mResumed = false; 
     if (mControlResumed) { 
      if (null != videoView) 
       videoView.pause(); 
      stopPosition = videoView.getCurrentPosition(); 
      mControlResumed = false; 
     } 
    } 


    @Override 
    public void onResume() { 
     super.onResume(); 
     mResumed = true; 
     if (mFocused && mResumed && !mControlResumed) { 
      if(null != videoView) { 
       //videoView.resume(); 
       videoView.seekTo(stopPosition); 
       videoView.start(); 
      } 
      mControlResumed = true; 
     } 
    } 


    @Override 
    public void onWindowFocusChanged(boolean hasFocus) { 
     mFocused = hasFocus; 
     if (mFocused && mResumed && !mControlResumed) { 
      if (null != videoView) { 
       //videoView.resume(); 
       videoView.seekTo(stopPosition); 
       videoView.start(); 
      } 
      mControlResumed = true; 
     } 
    } 
} 

你可以这样调用:

Intent intent = new Intent(); 
    intent.setClass(mContext, VideoPlayerActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    mContext.startActivity(intent); 
+0

你的意思是将我的当前类转换为VideoView? –

+0

编号写一个像上面这样的新类,并从您的活动中调用它。我编辑了我的代码以添加如何调用此VideoActivity类 – Sushil

相关问题