Как заставить оборудование Bluetooth с поддержкой aptX работать с Ubuntu?

Вы можете динамически обновлять все фрагменты, вы можете увидеть в три шага.

В вашем адаптере:

public class MyPagerAdapter extends FragmentPagerAdapter {
private static int NUM_ITEMS = 3;
private Map mFragmentTags;
private FragmentManager mFragmentManager;

public MyPagerAdapter(FragmentManager fragmentManager) {
    super(fragmentManager);
    mFragmentManager = fragmentManager;
    mFragmentTags = new HashMap();
}

// Returns total number of pages
@Override
public int getCount() {
    return NUM_ITEMS;
}

// Returns the fragment to display for that page
@Override
public Fragment getItem(int position) {
    switch (position) {
        case 0:
            return FirstFragment.newInstance();
        case 1:
            return SecondFragment.newInstance();
        case 2:
            return ThirdFragment.newInstance();
        default:
            return null;
    }
}

// Returns the page title for the top indicator
@Override
public CharSequence getPageTitle(int position) {
    return "Page " + position;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
    Object object = super.instantiateItem(container, position);
    if (object instanceof Fragment) {
        Fragment fragment = (Fragment) object;
        String tag = fragment.getTag();
        mFragmentTags.put(position, tag);
    }
    return object;
}

public Fragment getFragment(int position) {
    Fragment fragment = null;
    String tag = mFragmentTags.get(position);
    if (tag != null) {
        fragment = mFragmentManager.findFragmentByTag(tag);
    }
    return fragment;
}}

Теперь в вашей деятельности:

public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener{

MyPagerAdapter mAdapterViewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ViewPager viewPager = (ViewPager) findViewById(R.id.vpPager);
    mAdapterViewPager = new MyPagerAdapter(getSupportFragmentManager());
    viewPager.setAdapter(mAdapterViewPager);
    viewPager.addOnPageChangeListener(this);
}

@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
public void onPageSelected(int position) {

    Fragment fragment = mAdapterViewPager.getFragment(position);
    if (fragment != null) {
        fragment.onResume();
    }
}

@Override
public void onPageScrollStateChanged(int state) {

}}

Наконец, в вашем фрагменте, что-то вроде этого:

public class YourFragment extends Fragment {

// newInstance constructor for creating fragment with arguments
public static YourFragment newInstance() {

    return new YourFragment();
}

// Store instance variables based on arguments passed
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

// Inflate the view for the fragment based on layout XML
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment, container, false);
}


@Override
public void onResume() {
    super.onResume();

    //to refresh your view
    refresh();

}}

Вы можете полный код см. здесь здесь .

Спасибо Альваро Луису Бустаманте.

24
задан 13.05.2020, 07:25

1 ответ

Редактирование 27.10.2018: LDAC, APTX (-HD) и поддержка AAC PulseAudio находятся в работах. Существует репозиторий на GitHub EHfive с патчами, а также PPA для 18,04 прогрессивных, проверьте Wiki для получения дополнительной информации. Похоже, что патчи прибудут в восходящем направлении в какой-то момент вовремя. Я проверил PPA на 18,04, он работает, хотя он заменяет PA 11.1 12, устанавливает более новую версию ffmpeg и x265.

Редактирование 18.12.2017: Я, должно быть, пропустил его несколько недель назад, но похоже, что существует кодер теперь в FFmpeg. К моему знанию никакое удобное для пользователя решение не существует в данный момент.

короткий ответ

необходимо использовать специальные фирменные аппаратные ключи Bluetooth. Взгляните на , Как я могу использовать aptX тогда? раздел этого ответа или просматривают сайт aptx.com для [1 152] передатчики .

<час>

более длинный ответ

Лицензирование проблем

aptX кодек является собственным стандартом, тот , CSR, полученный от APT Licensing Ltd. с целью разработать и продать aptX, привел в действие высокое качество решения для аудио Bluetooth через компонент, выпускающийся под брендом . Вы корректны, это - стратегия CSR для продажи эксклюзивных микросхем.

я нашел следующий пункт при просмотре лицензионное соглашение декодера:

  • реализуют программное обеспечение как встроенное микропрограммное обеспечение в безопасном коде, встроенном в продукт Лицензиата

, В то время как это не отвечает на вопросы о кодере, я сказал бы, что ситуация является, по крайней мере, столь же трудной как с другими собственными кодеками и компонентами программного обеспечения ( 1 , 2 , 3 ).

, Как я могу использовать aptX тогда?

можно использовать его, просто не как решение для бесплатного программного обеспечения.

можно найти специальные фирменные аппаратные ключи Bluetooth, так называемые aptX Передатчики. Это не типичные нано или pico-размерные аппаратные ключи Bluetooth, но устройства Класса Аудио USB. (Взгляните на эти классы устройства раздел по статье USB в Википедии для получения дополнительной информации.) Это означает, что эти устройства будут распознаны как звуковые карты и не предоставят возможность соединения Bluetooth главному компьютеру. Существует также одна главная оборотная сторона: они стоят почти в 10 раз больше, чем регулярные аппаратные ключи Bluetooth.

Список aptX Передатчики или аппаратные ключи Bluetooth с поддержкой aptX в алфавитном порядке:

  • Творческий USB BT-D1 Передатчик Bluetooth, Bluetooth 2.1 + EDR
  • , Творческий BT-W1/BT-W2 USB, Bluetooth 2.1 + EDR
  • Sennheiser BTD 500 USB, Bluetooth 3.0
  • Avantree BTDG-50-WGR, Bluetooth 4.1 с aptX LL

(Дополнения приветствуются! Я любил бы к see— предпочтительно cheaper— альтернативы.)

Проверка настроенный кодек соединения

Установка bluez-hcidump и выполненный sudo hcidump avdtp, затем подключите устройство и ищите согласование конфигурации. Следующий это - результат, который я получил (см. также ), похоже, что это попробовало aptX, AAC и наконец согласилось на SBC.

$ sudo hcidump avdtp
HCI sniffer - Bluetooth packet analyzer ver 5.35
device: hci0 snap_len: 1500 filter: 0x400
< AVDTP(s): Discover cmd: transaction 11 nsp 0x00
> AVDTP(s): Discover rsp: transaction 11 nsp 0x00
    ACP SEID 5 - Audio Sink
    ACP SEID 3 - Audio Sink
    ACP SEID 1 - Audio Sink
< AVDTP(s): Capabilities cmd: transaction 12 nsp 0x00
    ACP SEID 5
> AVDTP(s): Capabilities rsp: transaction 12 nsp 0x00
    Media Transport
    Media Codec - non-A2DP (aptX)
      16kHz 32kHz 44.1kHz 48kHz 
      Stereo 
< AVDTP(s): Capabilities cmd: transaction 13 nsp 0x00
    ACP SEID 3
> AVDTP(s): Capabilities rsp: transaction 13 nsp 0x00
    Media Transport
    Media Codec - MPEG-2,4 AAC
      MPEG-2 AAC LC MPEG-4 AAC LC 
      8kHz 11.025kHz 12kHz 16kHz 22.05kHz 24kHz 32kHz 44.1kHz 48kHz 
      1 2 Channels
      320000bps VBR
    Content Protection
      02 00 
< AVDTP(s): Capabilities cmd: transaction 14 nsp 0x00
    ACP SEID 1
> AVDTP(s): Capabilities rsp: transaction 14 nsp 0x00
    Media Transport
    Media Codec - SBC
      16kHz 32kHz 44.1kHz 48kHz 
      Mono DualChannel Stereo JointStereo 
      4 8 12 16 Blocks
      4 8 Subbands
      SNR Loudness 
      Bitpool Range 2-53
    Content Protection
      02 00 
< AVDTP(s): Set config cmd: transaction 15 nsp 0x00
    ACP SEID 1 - INT SEID 1
    Media Transport
    Media Codec - SBC
      44.1kHz 
      JointStereo 
      16 Blocks
      8 Subbands
      Loudness 
      Bitpool Range 2-53
> AVDTP(s): Set config rsp: transaction 15 nsp 0x00
< AVDTP(s): Open cmd: transaction 0 nsp 0x00
    ACP SEID 1
> AVDTP(s): Open rsp: transaction 0 nsp 0x00
< AVDTP(s): Start cmd: transaction 1 nsp 0x00
    ACP SEID 1
> AVDTP(s): Start rsp: transaction 1 nsp 0x00
< AVDTP(m): ver 2 cc 0 pt 1 seqn 0 time 0 ssrc 1
< AVDTP(m): ver 2 cc 0 pt 1 seqn 1 time 896 ssrc 1

Поиск и устранение неисправностей

  • A2DP однонаправлен, можно только слушать музыку с A2DP. Для речи вызов используют профили HSP/HFP.
  • , Если наушники или устройства не распознаны или перечислены как устройство вывода, например, в VLC, попытайтесь переключиться на другую звуковую карту и назад через звуковые настройки. Устройства должны быть распознаны тогда.

Что относительно Телефона Ubuntu?

я не знаю, будет ли Ubuntu по Телефонам поддерживать этот кодек. В документах CSR говорится, что решения доступны для производителей устройств на базе Android, таким образом, я предполагаю, что это до телефона manufacurers, чтобы решить если и как. Конечно, Касание Ubuntu обычно поддерживает гарнитуры Bluetooth, и я смог соединить свой Nexus 4 рабочий Ubuntu с гарнитурами, которые я протестировал.

<час>

Мой опыт и тесты

модули Bluetooth и аппаратные ключи протестировали:

  • Рабочий стол с нано Bluetooth 2.1 и 4,0 аппаратными ключами, Lenovo T530 с созданным в модуле. - A2DP достиг почти того же уровня качества как BTD 500, играя музыку из файлов FLAC. Аудио из фильмов было в синхронизации с 14,04.
  • Sennheiser BTD 500 USB. - Соединение берет пока с регулярным не-NFC способные аппаратные ключи.

Гарнитуры протестировали:

  • Philips Fidelio M1BTBL, Bluetooth 4.0. - Хорошо работает со всеми аппаратными ключами и модулями.
  • MDR-10RBT Sony, Bluetooth 3.0, NFC. - Хорошо работает со всеми аппаратными ключами и модулями.
  • Творческая звуковая карта EVO ZxR, Bluetooth 2.1, NFC. - Этот имел лучший диапазон приема всех этих трех, но не мог соединиться с BTD 500.
38
ответ дан 13.05.2020, 07:25
  • 1
    Avantree также делают один, модель BTDG-50-WGR. Нет я не работаю на них, это - просто хорошая информация для знания. – Axel Guilmin 13.05.2020, 07:26
  • 2
    Azio BTD-v401 также рекламирует aptX возможность, но я не могу прокомментировать it' s совместимость с Ubuntu или любым Linux в этом отношении. – bibscy 13.05.2020, 07:26
  • 3
    Как Вы проверяли, соединяет ли устройство на самом деле использование aptX вместо SBC? – dharmendra vaishnav 13.05.2020, 07:27
  • 4
    @Jezor я не смотрел в теневых местах потому что я didn' t имеют это много интереса или технического навыка, ни имеют меня я бывший в состоянии для нахождения чего-либо об этом тогда. Возможно, некоторые люди сделали, я don' t знают, и я скорее предпочитаю решение с открытым исходным кодом, как я записал. LDAC, кажется, делает aptX устаревший и более открыт, насколько я знаю. – Balasubramanian 13.05.2020, 07:27
  • 5
    Из любопытства и определенно не потому что я никогда не платил бы 40$ за freakin' аппаратный ключ, никто никогда не восстанавливал двоичный файл / созданная альтернатива, которая соединится как aptx, который был бы доступен в некоторых теневых местах? – ckim16 13.05.2020, 07:28