MtpServer.java revision a3f8514492cb4bc8fa7c36e2c0f720342796ada7
198ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood/* 298ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * Copyright (C) 2010 The Android Open Source Project 398ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * 498ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 598ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * you may not use this file except in compliance with the License. 698ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * You may obtain a copy of the License at 798ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * 898ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 998ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * 1098ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * Unless required by applicable law or agreed to in writing, software 1198ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 1298ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1398ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * See the License for the specific language governing permissions and 1498ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * limitations under the License. 1598ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood */ 1698ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood 170cd0136d440cf6ad9d5fab430269116786e671ecMike Lockwoodpackage android.mtp; 1898ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood 1998ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwoodimport android.util.Log; 2098ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood 2198ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood/** 2298ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * Java wrapper for MTP/PTP support as USB responder. 2398ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood * {@hide} 2498ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood */ 2598ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwoodpublic class MtpServer { 2698ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood 27a3f8514492cb4bc8fa7c36e2c0f720342796ada7Mike Lockwood private final Object mLock = new Object(); 28a3f8514492cb4bc8fa7c36e2c0f720342796ada7Mike Lockwood private boolean mStarted; 29a3f8514492cb4bc8fa7c36e2c0f720342796ada7Mike Lockwood 3098ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood private static final String TAG = "MtpServer"; 3198ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood 3298ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood static { 3398ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood System.loadLibrary("media_jni"); 3498ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood } 3598ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood 367f36b19b6b78c83f1c52edd153d64295ee3840ceMike Lockwood public MtpServer(MtpDatabase database, String storagePath, long reserveSpace) { 377f36b19b6b78c83f1c52edd153d64295ee3840ceMike Lockwood native_setup(database, storagePath, reserveSpace); 3898ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood } 3998ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood 4098ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood public void start() { 41a3f8514492cb4bc8fa7c36e2c0f720342796ada7Mike Lockwood synchronized (mLock) { 42a3f8514492cb4bc8fa7c36e2c0f720342796ada7Mike Lockwood native_start(); 43a3f8514492cb4bc8fa7c36e2c0f720342796ada7Mike Lockwood mStarted = true; 44a3f8514492cb4bc8fa7c36e2c0f720342796ada7Mike Lockwood } 4598ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood } 4698ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood 4798ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood public void stop() { 48a3f8514492cb4bc8fa7c36e2c0f720342796ada7Mike Lockwood synchronized (mLock) { 49a3f8514492cb4bc8fa7c36e2c0f720342796ada7Mike Lockwood if (mStarted) { 50a3f8514492cb4bc8fa7c36e2c0f720342796ada7Mike Lockwood native_stop(); 51a3f8514492cb4bc8fa7c36e2c0f720342796ada7Mike Lockwood mStarted = false; 52a3f8514492cb4bc8fa7c36e2c0f720342796ada7Mike Lockwood } 53a3f8514492cb4bc8fa7c36e2c0f720342796ada7Mike Lockwood } 5498ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood } 5598ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood 56be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood public void sendObjectAdded(int handle) { 57be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood native_send_object_added(handle); 58be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood } 59be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood 60be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood public void sendObjectRemoved(int handle) { 61be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood native_send_object_removed(handle); 62be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood } 63be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood 64eabe8bfaf8c45289a4cfd880f4107d1a9b17e38bMike Lockwood public void setPtpMode(boolean usePtp) { 65eabe8bfaf8c45289a4cfd880f4107d1a9b17e38bMike Lockwood native_set_ptp_mode(usePtp); 66eabe8bfaf8c45289a4cfd880f4107d1a9b17e38bMike Lockwood } 67eabe8bfaf8c45289a4cfd880f4107d1a9b17e38bMike Lockwood 6866e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood // Used to disable MTP by removing all storage units. 6966e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood // This is done to disable access to file transfer when the device is locked. 7066e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood public void setLocked(boolean locked) { 7166e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood native_set_locked(locked); 7266e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood } 7366e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood 747f36b19b6b78c83f1c52edd153d64295ee3840ceMike Lockwood private native final void native_setup(MtpDatabase database, String storagePath, 757f36b19b6b78c83f1c52edd153d64295ee3840ceMike Lockwood long reserveSpace); 7698ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood private native final void native_start(); 7798ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood private native final void native_stop(); 78be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood private native final void native_send_object_added(int handle); 79be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood private native final void native_send_object_removed(int handle); 80eabe8bfaf8c45289a4cfd880f4107d1a9b17e38bMike Lockwood private native final void native_set_ptp_mode(boolean usePtp); 8166e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood private native final void native_set_locked(boolean locked); 8298ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood} 83