CodecTest.java revision b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.mediaframeworktest.functional; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//import android.content.Resources; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.mediaframeworktest.MediaFrameworkTest; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.mediaframeworktest.MediaNames; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.AssetFileDescriptor; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Bitmap; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.BitmapFactory; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.media.MediaMetadataRetriever; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.media.MediaPlayer; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.media.MediaRecorder; 31b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Projectimport android.os.Looper; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.SystemClock; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.IOException; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.InputStream; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Junit / Instrumentation test case for the media player api 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class CodecTest { 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static String TAG = "MediaPlayerApiTest"; 43b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project private static MediaPlayer mMediaPlayer; 44b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project private MediaPlayer.OnPreparedListener mOnPreparedListener; 45b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 46b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project private static int WAIT_FOR_COMMAND_TO_COMPLETE = 10000; //10 seconds max. 47b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project private static boolean mInitialized = false; 48b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project private static Looper mLooper = null; 49b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project private static final Object lock = new Object(); 50b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project private static final Object prepareDone = new Object(); 51b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project private static boolean onPrepareSuccess = false; 52b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static String printCpuInfo(){ 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String cm = "dumpsys cpuinfo"; 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String cpuinfo =null; 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int ch; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Process p = Runtime.getRuntime().exec(cm); 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project InputStream in = p.getInputStream(); 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StringBuffer sb = new StringBuffer(512); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while ( ( ch = in.read() ) != -1 ){ 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append((char) ch); 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cpuinfo = sb.toString(); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (IOException e){ 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, e.toString()); 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return cpuinfo; 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getDuration(String filePath) { 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "getDuration - " + filePath); 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){} 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int duration = mp.getDuration(); 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "Duration " + duration); 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "release"); 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return duration; 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean getCurrentPosition(String filePath){ 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "GetCurrentPosition - " + filePath); 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int currentPosition = 0; 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long t1=0; 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long t2 =0; 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "start playback"); 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.start(); 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t1=SystemClock.uptimeMillis(); 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(10000); 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.pause(); 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(MediaNames.PAUSE_WAIT_TIME); 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t2=SystemClock.uptimeMillis(); 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){ 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, e.toString()); 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project currentPosition = mp.getCurrentPosition(); 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.stop(); 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "mp currentPositon = " + currentPosition + " play duration = " + (t2-t1)); 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //The currentposition should be within 10% of the sleep time 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //For the very short mp3, it should return the length instead of 10 seconds 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (filePath.equals(MediaNames.SHORTMP3)){ 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (currentPosition < 1000 ) 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((currentPosition < ((t2-t1) *1.2)) && (currentPosition > 0)) 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean seekTo(String filePath){ 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "seekTo " + filePath); 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int currentPosition = 0; 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.start(); 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.seekTo(MediaNames.SEEK_TIME); 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(MediaNames.WAIT_TIME); 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project currentPosition = mp.getCurrentPosition(); 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){ 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, e.getMessage()); 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.stop(); 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "CurrentPosition = " + currentPosition); 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //The currentposition should be at least greater than the 80% of seek time 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((currentPosition > MediaNames.SEEK_TIME *0.8)) 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean setLooping(String filePath){ 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int currentPosition = 0; 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int duration = 0; 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long t1 =0; 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long t2 =0; 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v (TAG, "SetLooping - " + filePath); 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project duration = mp.getDuration(); 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "setLooping duration " + duration); 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setLooping(true); 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.start(); 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(5000); 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.seekTo(duration - 5000); 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t1=SystemClock.uptimeMillis(); 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(20000); 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t2=SystemClock.uptimeMillis(); 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "pause"); 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Bug# 1106852 - IllegalStateException will be thrown if pause is called 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //in here 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //mp.pause(); 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project currentPosition = mp.getCurrentPosition(); 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "looping position " + currentPosition + "duration = " + (t2-t1)); 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){ 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "Exception : " + e.toString()); 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.stop(); 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //The current position should be within 20% of the sleep time 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //and should be greater than zero. 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((currentPosition < ((t2-t1-5000)*1.2)) && currentPosition > 0) 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean pause(String filePath) throws Exception { 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "pause - " + filePath); 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean misPlaying = true; 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean pauseResult = false; 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long t1=0; 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long t2=0; 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int duration = mp.getDuration(); 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.start(); 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t1=SystemClock.uptimeMillis(); 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(5000); 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.pause(); 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(MediaNames.PAUSE_WAIT_TIME); 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t2=SystemClock.uptimeMillis(); 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project misPlaying = mp.isPlaying(); 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int curPosition = mp.getCurrentPosition(); 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, filePath + " pause currentPositon " + curPosition); 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "isPlaying "+ misPlaying + " wait time " + (t2 - t1) ); 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String cpuinfo = printCpuInfo(); 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, cpuinfo); 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((curPosition>0) && (curPosition < ((t2-t1) * 1.3)) && (misPlaying == false)) 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project pauseResult = true; 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.stop(); 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return pauseResult; 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void prepareStopRelease(String filePath) throws Exception { 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "prepareStopRelease" + filePath); 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.stop(); 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void preparePauseRelease(String filePath) throws Exception { 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "preparePauseRelease" + filePath); 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.pause(); 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int videoHeight(String filePath) throws Exception { 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "videoHeight - " + filePath); 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int videoHeight = 0; 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDisplay(MediaFrameworkTest.mSurfaceView.getHolder()); 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoHeight = mp.getVideoHeight(); 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return videoHeight; 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int videoWidth(String filePath) throws Exception { 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "videoWidth - " + filePath); 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int videoWidth = 0; 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDisplay(MediaFrameworkTest.mSurfaceView.getHolder()); 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoWidth = mp.getVideoWidth(); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return videoWidth; 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //This also test the streaming video which may take a long 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //time to start the playback. 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean videoSeekTo(String filePath) throws Exception { 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "videoSeekTo - " + filePath); 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int currentPosition = 0; 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int duration = 0; 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoResult = false; 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDisplay(MediaFrameworkTest.mSurfaceView.getHolder()); 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.start(); 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (filePath.equals(MediaNames.VIDEO_SHORT_3GP)){ 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.pause(); 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(MediaNames.PAUSE_WAIT_TIME); 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.seekTo(0); 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.start(); 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(1000); 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project currentPosition = mp.getCurrentPosition(); 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG,"short position " + currentPosition); 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (currentPosition > 100 ) 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(5000); 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project duration = mp.getDuration(); 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "video duration " + duration); 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.pause(); 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(MediaNames.PAUSE_WAIT_TIME); 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.seekTo(duration - 20000 ); 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.start(); 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(1000); 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.pause(); 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(MediaNames.PAUSE_WAIT_TIME); 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.seekTo(duration/2); 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.start(); 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(10000); 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project currentPosition = mp.getCurrentPosition(); 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "video currentPosition " + currentPosition); 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (currentPosition > (duration /2 )*0.9) 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean seekToEnd(String filePath){ 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "seekToEnd - " + filePath); 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int duration = 0; 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int currentPosition = 0; 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean isPlaying = false; 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "start playback"); 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project duration = mp.getDuration(); 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.seekTo(duration - 3000); 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.start(); 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(6000); 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){} 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project isPlaying = mp.isPlaying(); 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project currentPosition = mp.getCurrentPosition(); 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "seekToEnd currentPosition= " + currentPosition + " isPlaying = " + isPlaying); 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.stop(); 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "duration = " + duration); 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (currentPosition < 0.9 * duration || isPlaying) 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean shortMediaStop(String filePath){ 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "shortMediaStop - " + filePath); 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //This test is only for the short media file 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int duration = 0; 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int currentPosition = 0; 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean isPlaying = false; 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "start playback"); 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project duration = mp.getDuration(); 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.start(); 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(10000); 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){} 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project isPlaying = mp.isPlaying(); 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project currentPosition = mp.getCurrentPosition(); 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "seekToEnd currentPosition= " + currentPosition + " isPlaying = " + isPlaying); 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.stop(); 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "duration = " + duration); 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (currentPosition > duration || isPlaying) 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean playToEnd(String filePath){ 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "shortMediaStop - " + filePath); 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //This test is only for the short media file 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int duration = 200000; 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int updateDuration = 0; 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int currentPosition = 0; 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean isPlaying = false; 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(5000); 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "start playback"); 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //duration = mp.getDuration(); 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.start(); 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(50000); 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){} 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project isPlaying = mp.isPlaying(); 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project currentPosition = mp.getCurrentPosition(); 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //updateDuration = mp.getDuration(); 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "seekToEnd currentPosition= " + currentPosition + " isPlaying = " + isPlaying); 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.stop(); 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Log.v(TAG, "duration = " + duration); 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Log.v(TAG, "Update duration = " + updateDuration); 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (currentPosition > duration || isPlaying) 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean seektoBeforeStart(String filePath){ 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "seektoBeforeStart - " + filePath); 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //This test is only for the short media file 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int duration = 0; 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int currentPosition = 0; 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project duration = mp.getDuration(); 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.seekTo(duration - 10000); 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.start(); 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project currentPosition=mp.getCurrentPosition(); 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.stop(); 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){} 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (currentPosition < duration/2) 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean mediaRecorderRecord(String filePath){ 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "SoundRecording - " + filePath); 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //This test is only for the short media file 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int duration = 0; 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder mRecorder = new MediaRecorder(); 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setOutputFile(filePath); 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.prepare(); 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.start(); 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(500); 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.stop(); 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "sound recorded"); 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.release(); 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){ 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, e.toString()); 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Verify the recorded file 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project duration = mp.getDuration(); 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG,"Duration " + duration); 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){} 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Check the record media file length is greate than zero 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (duration > 0) 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Test for mediaMeta Data Thumbnail 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean getThumbnail(String filePath, String goldenPath){ 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "getThumbnail - " + filePath); 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int goldenHeight = 0; 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int goldenWidth = 0; 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int outputWidth = 0; 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int outputHeight = 0; 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //This test is only for the short media file 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BitmapFactory mBitmapFactory = new BitmapFactory(); 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaMetadataRetriever mMediaMetadataRetriever = new MediaMetadataRetriever(); 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMediaMetadataRetriever.setDataSource(filePath); 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch(Exception e) { 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project e.printStackTrace(); 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bitmap outThumbnail = mMediaMetadataRetriever.captureFrame(); 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Verify the thumbnail 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bitmap goldenBitmap = mBitmapFactory.decodeFile(goldenPath); 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project outputWidth = outThumbnail.getWidth(); 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project outputHeight = outThumbnail.getHeight(); 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goldenHeight = goldenBitmap.getHeight(); 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goldenWidth = goldenBitmap.getWidth(); 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //check the image dimension 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((outputWidth != goldenWidth) || (outputHeight != goldenHeight)) 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Check one line of pixel 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int x = goldenHeight/2; 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int j=0; j<goldenWidth; j++){ 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (goldenBitmap.getPixel(x, j) != outThumbnail.getPixel(x, j)){ 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "pixel = " + goldenBitmap.getPixel(x, j)); 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){} 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Load midi file from resources 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean resourcesPlayback(AssetFileDescriptor afd, int expectedDuration){ 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int duration = 0; 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength()); 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.start(); 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project duration = mp.getDuration(); 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(5000); 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){ 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG,e.getMessage()); 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (duration > expectedDuration) 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean prepareAsyncReset(String filePath){ 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //preparesAsync 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try{ 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = new MediaPlayer(); 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepareAsync(); 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.reset(); 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){ 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG,e.getMessage()); 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean isLooping(String filePath) { 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = null; 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp = new MediaPlayer(); 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mp.isLooping()) { 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "MediaPlayer.isLooping() returned true after ctor"); 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setLooping(true); 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!mp.isLooping()) { 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "MediaPlayer.isLooping() returned false after setLooping(true)"); 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setLooping(false); 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mp.isLooping()) { 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "MediaPlayer.isLooping() returned true after setLooping(false)"); 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){ 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "Exception : " + e.toString()); 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mp != null) 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean isLoopingAfterReset(String filePath) { 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mp = null; 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp = new MediaPlayer(); 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setDataSource(filePath); 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.prepare(); 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.setLooping(true); 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.reset(); 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mp.isLooping()) { 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "MediaPlayer.isLooping() returned true after reset()"); 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }catch (Exception e){ 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "Exception : " + e.toString()); 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mp != null) 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.release(); 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 587b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 588b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project /* 589b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * Initializes the message looper so that the mediaPlayer object can 590b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * receive the callback messages. 591b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project */ 592b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project private static void initializeMessageLooper() { 593b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project Log.v(TAG, "start looper"); 594b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project new Thread() { 595b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project @Override 596b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public void run() { 597b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project // Set up a looper to be used by camera. 598b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project Looper.prepare(); 599b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project Log.v(TAG, "start loopRun"); 600b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project // Save the looper so that we can terminate this thread 601b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project // after we are done with it. 602b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project mLooper = Looper.myLooper(); 603b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project mMediaPlayer = new MediaPlayer(); 604b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project synchronized (lock) { 605b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project mInitialized = true; 606b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project lock.notify(); 607b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 608b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project Looper.loop(); // Blocks forever until Looper.quit() is called. 609b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project Log.v(TAG, "initializeMessageLooper: quit."); 610b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 611b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project }.start(); 612b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 613b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 614b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project /* 615b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * Terminates the message looper thread. 616b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project */ 617b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project private static void terminateMessageLooper() { 618b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project mLooper.quit(); 619b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project mMediaPlayer.release(); 620b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 621b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 622b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project static MediaPlayer.OnPreparedListener mPreparedListener = new MediaPlayer.OnPreparedListener() { 623b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public void onPrepared(MediaPlayer mp) { 624b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project synchronized (prepareDone) { 625b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project Log.v(TAG, "notify the prepare callback"); 626b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project prepareDone.notify(); 627b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project onPrepareSuccess = true; 628b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 629b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 630b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project }; 631b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 632b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public static boolean prepareAsyncCallback(String filePath) throws Exception { 633b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project int videoWidth = 0; 634b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project int videoHeight = 0; 635b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project boolean checkVideoDimension = false; 636b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 637b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project initializeMessageLooper(); 638b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project synchronized (lock) { 639b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project try { 640b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project lock.wait(WAIT_FOR_COMMAND_TO_COMPLETE); 641b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } catch(Exception e) { 642b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project Log.v(TAG, "looper was interrupted."); 643b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return false; 644b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 645b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 646b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project try{ 647b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project mMediaPlayer.setOnPreparedListener(mPreparedListener); 648b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project mMediaPlayer.setDataSource(filePath); 649b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project mMediaPlayer.setDisplay(MediaFrameworkTest.mSurfaceView.getHolder()); 650b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project mMediaPlayer.prepareAsync(); 651b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project synchronized (prepareDone) { 652b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project try { 653b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project prepareDone.wait(WAIT_FOR_COMMAND_TO_COMPLETE); 654b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project Log.v(TAG, "setPreview done"); 655b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } catch (Exception e) { 656b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project Log.v(TAG, "wait was interrupted."); 657b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 658b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 659b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project videoWidth = mMediaPlayer.getVideoWidth(); 660b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project videoHeight = mMediaPlayer.getVideoHeight(); 661b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 662b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project terminateMessageLooper(); 663b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project }catch (Exception e){ 664b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project Log.v(TAG,e.getMessage()); 665b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 666b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return onPrepareSuccess; 667b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 668b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 669b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 670b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 673