一覺起來。8:10。臥槽,要遲到了,趕緊從牀上爬起來急急忙忙洗漱開溜。叮叮叮叮。一看時間距離上班還有分鐘。公司打卡範圍廣就是好啊。
打開筆記本。以及我的兩臺顯示器。如果你要問每天工作對着三個顯示器有什麼想法。。我只想說有點眼花。
未完成任務:將雙屏中的副屏視頻播放放入後臺。
我昨天終於放棄了掙扎跟老大說了我搞不定。老大表示意料之中。讓我在熟悉熟悉代碼。說是後面會和我一起調。當然我也不敢問後面是多久。
繼續熟悉代碼調試。看能不能瞎吉兒調成功。不過我好像也不屬於歐洲人。調了一上午都沒調成功。不過有個事我真的不能忍了。越看越氣。
還有類似的我就不一一舉例了。這個判斷是怎麼回事!!!!爲什麼你給了設了初始值又沒有改變他。你爲啥還不停的做判斷?萌新表示理解不了。這種毫無意義的代碼看着真的好氣人。浪費我的心力。也沒寫什麼註釋 。不過我也不敢全部刪掉。說不定有用呢。emmmmmm
到了下午我覺得我不能在這麼下去了。這麼瞎幾把調下去是沒有任何結果的。我決定先做一個小Demo。
MediaPlayer+SurfaceView+Presentation雙屏+Service後臺播放
第一步:創建新的Demo,註冊Activity和Service
第二步:MainAcitivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.test);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openWithHomePageUri("xxxxxx");
}
});
startService(new Intent(this, MyService.class));
}
private void handleIntent(Intent intent) {
intent.setAction("xxxxxxxxxx");
intent.setPackage("xxxxxxxxxx");//設置視頻包名,要先確認包名
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager
.queryIntentActivities(intent, 0);
Log.e("WWW",activities.size()+"");
boolean isIntentSafe = activities.size() > 0;
if (isIntentSafe) {
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "未安裝騰訊視頻 , 無法跳轉", Toast.LENGTH_SHORT).show();
}
}
private void openWithHomePageUri(String uri) {
Intent intent = new Intent();
intent.setData(Uri.parse(uri));
handleIntent(intent);
}
}
第三步:MyService
public class MyService extends Service implements DialogInterface.OnDismissListener {
private DisplayManager mDisplayManager;
private String TAG = "MyService";
private MyPresentation myPresentation;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
mDisplayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
Display[] displays = mDisplayManager.getDisplays();
Log.v(TAG,"displays.length = " + displays.length);
Log.v(TAG,"displays[0].getName() = " + displays[0].getName());
if(displays.length > 1)
{
Log.v(TAG,"displays[1].getName() = " + displays[1].getName());
}
if (myPresentation == null && displays.length > 1) {
myPresentation = new MyPresentation(getApplicationContext(), displays[displays.length - 1]);
myPresentation.setOnDismissListener(this);
myPresentation.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
//myPresentation.getWindow().setType(WindowManager.LayoutParams.TYPE_PHONE);
myPresentation.getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
myPresentation.show();
}
}
@Override
public void onDismiss(DialogInterface dialog) {
}
}
第四步:Presentation,請注意此處url資源路徑我是定死的
public class MyPresentation extends Presentation {
public MyPresentation(Context outerContext, Display display) {
super(outerContext, display);
}
public MyPresentation(Context outerContext, Display display, int theme) {
super(outerContext, display, theme);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.presentation_layout);
final MediaPlayer player = new MediaPlayer();
String dataPath = "/mnt/link2src/sys_file/media/default.mpg";
try {
player.setDataSource(dataPath);
} catch (Exception e) {
e.printStackTrace();
}
player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
player.start();
}
});
SurfaceView surfaceView = (SurfaceView)this.findViewById(R.id.suf);
surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
//將播放器和SurfaceView關聯起來
player.setDisplay(holder);
//異步緩衝當前視頻文件,也有一個同步接口
player.prepareAsync();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
}
}
實驗結果表明我老大的想法是沒有問題。既然音頻能夠後臺播放視頻應該也是可以的。
Demo主屏顯示視頻。副屏顯示主屏內容。我感覺好像顯示內容主副屏顛倒了。但是我點擊成功跳轉之後。視頻的播放沒有受到任何影響。這個目標是我想要實現的。至於內容爲什麼顛倒了。我明天在改改看看。快20:30了。寫完博客溜了。
還有如果有人想拿這些代碼試試的話請注意Presentation的權限問題。因爲我是直接在luncher裏測試擁有系統APP的權限,所以不用管。