Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5787a2d5 authored by Mike Lockwood's avatar Mike Lockwood
Browse files

USB connected notification and temporary USB options dialog



This change adds a notification when USB is connected.
Selecting the notification brings up a dialog to allow switching between
MTP and PTP modes, and also allows mounting a CD image for installing AFT.
The UI design is not final - this is a temporary implementation of the UI.

Change-Id: Idd678537aba595fd4cb183ea755bf437f372d826
Signed-off-by: default avatarMike Lockwood <lockwood@android.com>
parent ecedfdc7
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -2608,6 +2608,11 @@
    <!-- USB_STORAGE_ERROR dialog  ok button-->
    <string name="dlg_ok">OK</string>

    <!-- USB_PREFERENCES: When the user connects the phone to a computer via USB, we show a notification asking if he wants to share files across.  This is the title -->
    <string name="usb_preferences_notification_title">USB connected</string>
    <!-- See USB_PREFERENCES. This is the message. -->
    <string name="usb_preferece_notification_message">Select to configure USB file transfer.</string>

    <!-- External media format dialog strings -->
    <!-- This is the label for the activity, and should never be visible to the user. -->
    <!-- See EXTMEDIA_FORMAT.  EXTMEDIA_FORMAT_DIALOG:  After the user selects the notification, a dialog is shown asking if he wants to format the SD card.  This is the title. [CHAR LIMIT=20] -->
+4 −0
Original line number Diff line number Diff line
@@ -25,6 +25,10 @@
            android:exported="true"
            />

        <activity android:name=".usb.UsbPreferenceActivity"
             android:theme="@*android:style/Theme.Holo.Dialog.Alert"
             android:excludeFromRecents="true">
        </activity>
        <activity android:name=".usb.UsbStorageActivity"
                android:excludeFromRecents="true">
        </activity>
+43 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<!-- Check box that is displayed in the activity resolver UI for the user
     to make their selection the preferred activity. -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="14dip"
    android:paddingRight="15dip"
    android:orientation="vertical">

    <Button
        android:id="@+id/mtp_ptp_button"
        android:text="@string/use_ptp_button_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:focusable="true"
        android:clickable="true" />

    <Button
        android:id="@+id/installer_cd_button"
        android:text="@string/installer_cd_button_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:focusable="true"
        android:clickable="true" />

</LinearLayout>
+9 −0
Original line number Diff line number Diff line
@@ -156,4 +156,13 @@

    <!-- Compatibility mode help screen: body text. [CHAR LIMIT=150] -->
    <string name="compat_mode_help_body">When an app was designed for a smaller screen, a zoom control will appear by the clock.</string>

    <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
    <string name="usb_preference_title">USB file transfer options</string>
    <!-- Label for the MTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
    <string name="use_mtp_button_title">Mount as a media player (MTP)</string>
    <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] -->
    <string name="use_ptp_button_title">Mount as a camera (PTP)</string>
    <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] -->
    <string name="installer_cd_button_title">Install Android File Transfer application for Mac</string>
</resources>
+91 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.usb;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.util.Log;
import android.widget.Button;

import java.io.File;

import com.android.systemui.R;

public class UsbPreferenceActivity extends Activity implements View.OnClickListener  {

    private static final String TAG = "UsbPreferenceActivity";

    private UsbManager mUsbManager;
    private String mCurrentFunction;
    private String[] mFunctions;
    private String mInstallerImagePath;
    private Button mMtpPtpButton;
    private Button mInstallerCdButton;
    private boolean mPtpActive;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        mUsbManager = (UsbManager)getSystemService(Context.USB_SERVICE);

        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
        dialogBuilder.setTitle(getString(R.string.usb_preference_title));

        LayoutInflater inflater = (LayoutInflater)getSystemService(
                Context.LAYOUT_INFLATER_SERVICE);
        View buttonView = inflater.inflate(R.layout.usb_preference_buttons, null);
        dialogBuilder.setView(buttonView);
        mMtpPtpButton = (Button)buttonView.findViewById(R.id.mtp_ptp_button);
        mInstallerCdButton = (Button)buttonView.findViewById(R.id.installer_cd_button);
        mMtpPtpButton.setOnClickListener(this);
        mInstallerCdButton.setOnClickListener(this);

        mPtpActive = mUsbManager.isFunctionEnabled(UsbManager.USB_FUNCTION_PTP);
        if (mPtpActive) {
            mMtpPtpButton.setText(R.string.use_mtp_button_title);
        }

        mInstallerImagePath = getString(com.android.internal.R.string.config_isoImagePath);
        if (!(new File(mInstallerImagePath)).exists()) {
            mInstallerCdButton.setVisibility(View.GONE);
        }

        dialogBuilder.show();
    }

    public void onClick(View v) {
        if (v.equals(mMtpPtpButton)) {
            if (mPtpActive) {
                mUsbManager.setPrimaryFunction(UsbManager.USB_FUNCTION_MTP);
            } else {
                mUsbManager.setPrimaryFunction(UsbManager.USB_FUNCTION_PTP);
            }
        } else if (v.equals(mInstallerCdButton)) {
            mUsbManager.setPrimaryFunction(UsbManager.USB_FUNCTION_MASS_STORAGE);
            mUsbManager.setMassStorageBackingFile(mInstallerImagePath);
        }

        finish();
    }
}
Loading