MtpServer.java revision 66e57f6aa9d206552e9b154bf00a17d6efae7fb0
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
2798ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood    private static final String TAG = "MtpServer";
2898ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood
2998ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood    static {
3098ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood        System.loadLibrary("media_jni");
3198ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood    }
3298ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood
337f36b19b6b78c83f1c52edd153d64295ee3840ceMike Lockwood    public MtpServer(MtpDatabase database, String storagePath, long reserveSpace) {
347f36b19b6b78c83f1c52edd153d64295ee3840ceMike Lockwood        native_setup(database, storagePath, reserveSpace);
3598ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood    }
3698ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood
3798ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood    public void start() {
3898ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood        native_start();
3998ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood    }
4098ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood
4198ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood    public void stop() {
4298ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood        native_stop();
4398ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood    }
4498ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood
45be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood    public void sendObjectAdded(int handle) {
46be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood        native_send_object_added(handle);
47be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood    }
48be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood
49be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood    public void sendObjectRemoved(int handle) {
50be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood        native_send_object_removed(handle);
51be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood    }
52be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood
53eabe8bfaf8c45289a4cfd880f4107d1a9b17e38bMike Lockwood    public void setPtpMode(boolean usePtp) {
54eabe8bfaf8c45289a4cfd880f4107d1a9b17e38bMike Lockwood        native_set_ptp_mode(usePtp);
55eabe8bfaf8c45289a4cfd880f4107d1a9b17e38bMike Lockwood    }
56eabe8bfaf8c45289a4cfd880f4107d1a9b17e38bMike Lockwood
5766e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood    // Used to disable MTP by removing all storage units.
5866e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood    // This is done to disable access to file transfer when the device is locked.
5966e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood    public void setLocked(boolean locked) {
6066e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood        native_set_locked(locked);
6166e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood    }
6266e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood
637f36b19b6b78c83f1c52edd153d64295ee3840ceMike Lockwood    private native final void native_setup(MtpDatabase database, String storagePath,
647f36b19b6b78c83f1c52edd153d64295ee3840ceMike Lockwood            long reserveSpace);
6598ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood    private native final void native_start();
6698ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood    private native final void native_stop();
67be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood    private native final void native_send_object_added(int handle);
68be125a50b41f15810145671e0fcbdaf13b363e03Mike Lockwood    private native final void native_send_object_removed(int handle);
69eabe8bfaf8c45289a4cfd880f4107d1a9b17e38bMike Lockwood    private native final void native_set_ptp_mode(boolean usePtp);
7066e57f6aa9d206552e9b154bf00a17d6efae7fb0Mike Lockwood    private native final void native_set_locked(boolean locked);
7198ef64e4a89ced79094d4ff3dc0123c1989f9e10Mike Lockwood}
72